Hai truy vấn sau đây đang quay trở lại kết quả khác nhau, trước sự ngạc nhiên của tôi:Ưu tiên của nhiều câu lệnh JOIN trong sqlite là gì?
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;
và:
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;
Tôi tưởng tượng rằng nó nên không quan trọng khi bạn LEFT JOIN
trên zig
, kể từ khi tôi m không sử dụng các cột của zig
khi tham gia bar
và baz
. Tuy nhiên, có vẻ như sau, JOIN
-ing của bar
và baz
nuốt các hàng nơi zig
có giá trị null
... tại sao vậy?
Tôi bắt đầu nghi ngờ đây là một sự đơn giản hóa không chính xác về vấn đề của tôi - hai truy vấn đó thực sự phải giống nhau, tôi đã làm một việc khác. –