【发布时间】:2018-05-16 11:29:56
【问题描述】:
最近我对 SQL JOIN 执行顺序感到非常困惑。假设我有 3 个这样的表: image
这是查询:
SELECT *
FROM Table_a a
LEFT JOIN Table_b b ON a.id=b.id
INNER JOIN table_c c ON b.id=c.id
你认为结果会是什么?根据我在几个网页上阅读的内容,顺序不会影响结果。
这就是我认为的结果是A left Join B,那么结果将是inner join with C。所以取决于A left join B的结果,将决定最终结果的结果。如果我错了,请纠正我
【问题讨论】:
-
顺序无关紧要(尽管逻辑顺序更容易阅读)。在您的查询中,最终的内连接将左连接变成内连接。连接条件
b.id=c.id只能应用于非空值('something' = null => null)。