令我惊讶的是,以下两个查询返回了不同的结果:
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
,因为在加入and时zig
我没有使用zig
' 列。但是,似乎在后者中,-ing和吞噬了具有值的行......为什么会这样?bar
baz
JOIN
bar
baz
zig
null