小编典典

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

sql

此查询有什么问题?

select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

我有错误

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


阅读 178

收藏
2021-04-14

共1个答案

小编典典

这是您的查询:

select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

这样使用的子查询select称为 标量子查询 。可以在可以使用标量值(即单个值,例如数字或字符串)的地方使用此类子查询。

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

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

您的解决方案很简单,使用以下命令LEFT JOIN

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join
     data2 sf
     on 1=1;

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

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join lateral
     data2 sf
     on 1=1;

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

2021-04-14