다음 두 쿼리는 놀랍게도 다른 결과를 반환됩니다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
의 열을 사용하지 않습니다. 그러나, 후자의 경우 -bar
및 baz
은 zig
이 null
값을 갖는 행을 위로 삼킨다는 것을 알 것입니다. 왜 그럴까요?
저는 이것이 내 문제의 부정확 한 단순화라고 생각하기 시작했습니다.이 두 가지 쿼리는 실제로 동일해야하며 다른 작업을 수행하고있었습니다. –