Следующие два запроса возвращаются разные результаты, к моему удивлению:Каково преимущество нескольких операторов JOIN в sqlite?
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
, так как я м, не используя колонки zig
при присоединении к bar
и baz
. Однако, по-видимому, в последнем случае JOIN
-ing bar
и baz
поглощает строки, где zig
имеет значения null
... почему это так?
Я начинаю подозревать, что это было неточное упрощение моей проблемы - эти два вопроса действительно должны быть идентичными, я делал что-то еще. –