Nếu bộ lọc đi vào trong điều kiện JOIN
có chức năng (tức là nó là điều kiện tham gia thực tế, không chỉ bộ lọc), nó phải xuất hiện trong mệnh đề ON
của tham gia đó.
Worth chú ý:
Nếu bạn đặt nó trong mệnh đề WHERE
thay vào đó, các buổi biểu diễn đều giống nhau nếu tham gia là INNER
, nếu không nó khác. Như đã đề cập trong các ý kiến nó không thực sự quan trọng vì dù sao kết quả cũng khác nhau.
Đặt bộ lọc trong mệnh đề WHERE
khi nó thực sự là một điều kiện OUTER JOIN
implicitely hủy OUTER
bản chất của điều kiện ("tham gia ngay cả khi không có hồ sơ") như các bộ lọc này bao hàm hồ sơ thì phải có tồn tại trong những người đầu tiên địa điểm. Ví dụ:
... table1 t LEFT JOIN table2 u ON ... AND t2.column = 5
là đúng
... table1 t LEFT JOIN table2 u ON ...
WHERE t2.column = 5
là không chính xác, như t2.column = 5
kể động cơ rằng các bản ghi từ t2 đang mong đợi, mà đi ngược lại bên ngoài tham gia. Ngoại lệ này sẽ là một bộ lọc IS NULL
, chẳng hạn như WHERE t2.column IS (NOT) NULL
(mà thực chất là một cách thuận tiện để xây dựng bên ngoài có điều kiện tham gia)
LEFT
và RIGHT
tham gia là implicitely OUTER
tham gia.
Hy vọng điều đó sẽ hữu ích.
Câu trả lời này chứa một số văn bản sai và lộn xộn. 1. Đối với INNER JOIN bất kỳ điều kiện nào có thể ở trong WHERE thay vì ON, miễn là không có RA THAM GIA can thiệp. 2. Khi di chuyển một điều kiện LEFT JOIN từ một ON đến một WHERE hiệu suất là không liên quan kể từ khi bạn nói, kết quả khác nhau. 3. Sự khác biệt đó không nói chung "chuyển đổi OUTER JOIN thành một INNER JOIN". – philipxy
@philipxy bạn nói đúng, tôi đã cố gắng dọn dẹp một chút – Sebas
Điều gì làm 'bộ lọc đi vào trong điều kiện JOIN có chức năng' hoặc '[bộ lọc] là điều kiện tham gia thực tế, không chỉ là bộ lọc' có nghĩa là gì? Dù sao khái niệm 'chỉ là một bộ lọc' không hữu ích vì ý nghĩa của 'JOIN ON c AND d' giống với' JOIN ON c WHERE d'. (Trong thực tế, tiêu chuẩn SQL * định nghĩa * JOIN ON trong điều khoản JOIN WHERE.) Tương tự "hủy bỏ triệt để bản chất OUTER của điều kiện" * không giao tiếp bất cứ điều gì *. Mà bạn dường như đồng ý với kể từ khi bạn chú thích nó với các scare-trích dẫn (do đó chính nó không rõ ràng) '("tham gia ngay cả khi không có hồ sơ")'. Bạn không giải thích. – philipxy