Cos*_*min 3 sql oracle left-join
SELECT *
FROM TAB1
LEFT JOIN TAB2 ON TAB2.ID_TAB1 = TAB1.ID
JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3;
Run Code Online (Sandbox Code Playgroud)
和
SELECT *
FROM TAB1
LEFT JOIN (SELECT *
FROM TAB2
JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3) T
ON T.ID_TAB1 = TAB1.ID;
Run Code Online (Sandbox Code Playgroud)
小智 9
不,它们是不同的 - 第一个查询中对TAB3的内连接(在左连接到TAB2之后)有效地将左连接转回到内连接.
第二个查询中的括号确保在左连接之前评估到TAB3的内连接- 因此它仍然是TAB2的左连接,仅返回那些存在相应TAB3记录的TAB2记录(否则,返回TAB1记录对应的NULL).