以下两个查询返回不同的结果,出乎我的意料:sqlite中多个JOIN语句的优先级是多少?
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;
我想象的,它不应该不管你什么时候LEFT JOIN
上zig
,因为我当加入bar
和baz
时,不使用zig
的列。然而,看起来在后者中,JOIN
的bar
和baz
会吞噬zig
具有null
值的行...为什么是这样?
我开始怀疑这是对我的问题的不准确简化 - 这两个查询确实应该是相同的,我正在做其他事情。 – 2009-05-05 16:18:20