首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误(单行子查询返回多行)

错误(单行子查询返回多行)
EN

Stack Overflow用户
提问于 2019-09-09 09:06:45
回答 1查看 5.7K关注 0票数 0

这个查询有什么问题?

代码语言:javascript
运行
复制
select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

我有错误

ORA-01427:单行子查询返回多行。 01427。00000 -“单行子查询返回多行”

EN

Stack Overflow用户

回答已采纳

发布于 2019-09-09 11:02:33

这是您的查询:

代码语言:javascript
运行
复制
select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

像这样使用的select中的子查询称为标量子查询。在可以使用标量值(即单个值,例如数字或字符串)的情况下,可以使用这样的子查询。

标量子查询必须满足两个条件:

  • 它最多返回一行。
  • 它返回一列。

在您的情况下,使用LEFT JOIN的解决方案很简单

代码语言:javascript
运行
复制
select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join
     data2 sf
     on 1=1;

或者,在Oracle 12C中,您可以使用横向连接:

代码语言:javascript
运行
复制
select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join lateral
     data2 sf
     on 1=1;

在这种情况下,两者看起来是一样的,但是横向连接也可以用于相关子查询。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57850905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档