我遇到过一些我之前从未见过的Oracle sql语法(见下文)。我不确定TABLE2如何加入TABLE3。
SELECT A.FIELD, B.FIELD2, C.FIELD3
FROM
TABLE1 A
LEFT OUTER JOIN
(TABLE2 B
LEFT OUTER JOIN TABLE3 C ON B.ID = C.ID and B.NAME = C.NAME )
ON
A.ID = B.ID and A.NAME = B.NAME and A.BDATE = B.BDATE
查询上面是否与:
SELECT A.FIELD, B.FIELD2, C.FIELD3
FROM
TABLE1 A
LEFT JOIN TABLE2 B ON A.ID = B.ID and A.NAME = B.NAME and A.BDATE = B.BDATE
LEFT JOIN TABLE3 C ON B.ID = C.ID and B.NAME = C.NAME
括号控制评估的逻辑顺序。对于内连接,括号无关紧要。它需要更多的思考left join
。
我很确定,对于一系列只有left join
s,括号无关紧要。问题是记录在某些表中但不是所有表中。在这两种情况下,最终记录集都基于“A”。 “B”中的任何表和匹配“A”的表都应该有来自“B”的列。类似地,只有“C”与“A”和“B”都匹配时才会出现“C”。