首页 > 解决方案 > 在二级嵌套子查询中访问外部表

问题描述

假设我有,

select 
    (select SomColumn FROM MyInnerTable WHERE MyInnerTable.C1 = MyOuterTable.C2) AS FirstColumn
    ,(select SomColumn FROM (SELECT SomColumn FROM MyInnerTable2 WHERE MyInnerTable2.C1 = MyOuterTable.C2)) AS SecondColumn
form MyOuterTable

FirstColumn 有效,但对于 SecondColumn,它说 MyOuterTable.C2 未找到。

标签: sqloracleplsql

解决方案


Oracle(和 MySQL 以及可能的其他一些数据库)将表的范围限制在子查询中的一级。哎呀。不能那样做。

在这种情况下,LEFT JOIN无论如何你都应该使用。您的查询并不真正需要子查询,但您可以使用:

select i.SomeColumn, i.SomeColumn as AS SecondColumn
form MyOuterTable o LEFT JOIN
     MyInnerTable i
     ON MyInnerTable.C1 = MyOuterTable.C2;

在更复杂的情况下,您可能会发现横向连接是解决问题所需要的。如果您需要帮助,请使用更好的示例查询提出问题。


推荐阅读