Data flow · Thứ tự xử lý mệnh đề
Điều kiện ở WHERE hay ở ON
Điều kiện ở WHERE hay ở ON
kh và dh đi qua hai đường. Đặt d.tong > 400 ở WHERE: LEFT JOIN ra 4 dòng với dòng Chi mang NULL, rồi WHERE tính NULL > 400 thành UNKNOWN và loại dòng Chi, còn 2 dòng. Đặt điều kiện trong ON: LEFT JOIN giữ Chi với NULL, không có WHERE nào lọc thêm, ra 3 dòng.
BƯỚC 1 · FROM + JOIN … ON
BƯỚC 2 · WHERE
KẾT QUẢ
ĐIỀU KIỆN ĐẶT Ở WHERE
ĐIỀU KIỆN ĐẶT Ở ON
KHÔNG CÓ WHERE
kh + dh
3 khách · 3 đơn
LEFT JOIN
ON d.kh_id = k.id
ra 4 dòng · Chi: d.* = NULL
WHERE d.tong > 400
NULL > 400 → UNKNOWN
dòng của Chi bị loại
2 dòng
An 500 · Binh 700
Chi biến mất
LEFT JOIN
ON d.kh_id = k.id
AND d.tong > 400
3 dòng
An 500 · Binh 700
Chi · NULL
CHÚ GIẢI
Thứ tự xử lý logic
Mệnh đề
Kết quả mất dòng
Kết quả đúng ý định
© tiennhm