【发布时间】:2010-10-23 16:50:40
【问题描述】:
令我惊讶的是,以下两个查询返回了不同的结果:
SELECT *
FROM foo
JOIN bar
ON bar.id=foo.bar_id
JOIN baz
ON baz.id=foo.baz_id
LEFT JOIN zig
ON zig.foo_id=foo.id;
和:
SELECT *
FROM foo
LEFT JOIN zig
ON zig.foo_id=foo.id
JOIN bar
ON bar.id=foo.bar_id
JOIN baz
ON baz.id=foo.baz_id;
我想你在zig 上LEFT JOIN 应该没关系,因为在加入bar 和baz 时我没有使用zig 的列。但是,似乎在后者中,bar 和 baz 的 JOIN-ing 吞噬了 zig 具有 null 值的行...这是为什么呢?
【问题讨论】:
-
我开始怀疑这是对我的问题的不准确简化 - 这两个查询确实应该是相同的,我正在做其他事情。
标签: sql sqlite join left-join outer-join