【发布时间】:2014-11-11 11:37:15
【问题描述】:
我有点惊讶这两个查询给出不同的结果:
第一个查询:
SELECT a.number, a.name , b.*
FROM Atable a
LEFT OUTER JOIN Btable b
JOIN Ctable c ON c.number = b.number
ON b.number = a.number
ORDER BY a.number;
第二次查询:
SELECT a.number, a.name , b.*
FROM Atable a
LEFT OUTER JOIN Btable b ON b.number = a.number
JOIN Ctable c ON c.number = b.number
ORDER BY a.number
我的期望是这两个都会返回第一个查询的结果。第一个查询返回 TableA 中的每一行;然而,出乎意料的是,第二行只返回 TableA 中的结果,如果它们也存在于 TableC 中。
为什么从 C 到 B 的连接在第二个查询中限制 TableA 而在第一个查询中没有?
谢谢!
【问题讨论】:
-
同理(A + B)*C和A + (B*C)不同
标签: sql join inner-join outer-join