此查询出了什么问题?
select en.*,
(select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;
我有错误
ORA-01427:单行子查询返回多个行
01427. 00000-“单行子查询返回多个行”
答案 0 :(得分:2)
这是您的查询:
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;
在这种情况下,两者看起来相同,但是横向联接也可以用于相关子查询。