【发布时间】:2016-09-16 14:39:50
【问题描述】:
我有带有 LEFT JOIN 的 SELECT 语句,并且连接的表是子查询。并且 Oracle 无法识别第二个子查询中第一个子查询的别名。它适用于 DB2,但不适用于 Oracle。 我如何实现它或重写我的查询?
SELECT *
FROM
(SELECT E.C3 AS COLUMN3
, E.C4 AS COLUMN4
FROM TBL_1 D
, TBL_2 E
WHERE D.C6 = E.C6 ) B
LEFT JOIN TABLE
(SELECT C.C1
FROM TBL_3 C
WHERE
C.C7 = 'hello'
AND B.C3 = C.C8
UNION ALL
SELECT C.C1
FROM TBL_3 C
WHERE
C.C7 = 'world'
AND B.C4 = C.C8
) A
ON 1 = 1
Oracle 错误信息: ORA-00904: "B"."C3": 无效标识符
【问题讨论】:
-
我不了解 DB2,但这看起来像 SQL Server 的
CROSS/OUTER APPLY或 PostgreSQL/标准 SQL 的JOIN LATERAL。检查这是否有帮助:oracle-base.com/articles/12c/… -
您得到的确切的 ORA- 错误消息是什么?
标签: sql oracle join subquery alias