我想转换以下 Oracle SQL 查询语法(使用 LEFT OUTER JOIN
而不是 (+)
):
SELECT *
FROM TABLEA A, TABLEB B, TABLEC C, TABLED D
WHERE MY_COL = @col_val
AND A.X = B.X(+)
AND B.Y = C.Y(+)
AND D.Z=A.Z
这是我到目前为止尝试过的:
SELECT *
FROM TABLEA A, TABLEB B, TABLEC C, TABLED D
LEFT OUTER JOIN TABLEA A ON A.X = B.X
LEFT OUTER JOIN TABLEC C ON B.Y = C.Y
WHERE MY_COL = @col_val
AND D.Z = A.Z;
但我收到错误:
"ORA-00904: "B"."X" : invalid identifier"
最佳答案
join
在 D
是内连接,其余是左外连接:
SELECT *
FROM TABLEA A JOIN
TABLED D
ON D.Z = A.Z LEFT JOIN
TABLEB B
ON A.X = B.X LEFT JOIN
TABLEC C
ON B.Y = C.Y
WHERE MY_COL = @col_val;
我总是从内部连接开始连接链,然后是
left outer join
.我从不使用 right join
, 和 full join
比较少。内部联接定义了结果集中的行,因此它们排在最前面。
关于sql - 多个表上的多个 LEFT OUTER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750345/