SELECT *
FROM TAB1
LEFT JOIN TAB2 ON TAB2.ID_TAB1 = TAB1.ID
JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3;


SELECT *
FROM TAB1
LEFT JOIN (SELECT *
           FROM TAB2
           JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3) T
ON T.ID_TAB1 = TAB1.ID;

最佳答案

不,它们是不同的-在第一个查询中,TAB3的内部联接(在向TAB2左联接之后)有效地将左联接转换为内部联接。

第二个查询中的方括号可确保在左联接之前对TAB3的内部联接进行评估-因此它仍是对TAB2的左联接,仅返回那些存在相应TAB3记录的TAB2记录(否则,返回TAB1记录相应的NULL)。

10-07 16:22