此查询有什么问题?
select en.*, (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf ) from data1 en;
我有错误
ORA-01427:单行子查询返回多个行 01427。00000-“单行子查询返回多个行”
这是您的查询:
这样使用的子查询select称为 标量子查询 。可以在可以使用标量值(即单个值,例如数字或字符串)的地方使用此类子查询。
select
标量子查询必须满足两个条件:
您的解决方案很简单,使用以下命令LEFT JOIN:
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;
在这种情况下,两者看起来相同,但是横向联接也可以用于相关子查询。