Vâng, những gì bạn gọi là "tương đương" không phải là một tương đương cho các phép nối bên ngoài. Hãy lấy ví dụ về phép nối bên trái.
Điều kiện tham gia:
SELECT * FROM Customers c
LEFT JOIN CustomerAccounts ca ON ca.CustomerID = c.CustomerID AND c.State = 'NY'
LEFT JOIN Accounts a ON ca.AccountID = a.AccountID AND a.Status = 1
so với WHERE:
SELECT * FROM Customers c
LEFT JOIN CustomerAccounts ca ON ca.CustomerID = c.CustomerID
LEFT JOIN Accounts a ON ca.AccountID = a.AccountID
WHERE c.State = 'NY'
AND a.Status = 1
Đặt các điều kiện vào mệnh đề WHERE làm cho các phép nối INNER tham gia, vì mệnh đề WHERE là một hàng bộ lọc được áp dụng sau các phép nối đã được thực hiện.