Bạn nói đúng rằng NULL cannot be equal to anything
.
Điều bạn còn thiếu là NULL không được bằng
.
NULL
so với bất kỳ thứ gì luôn là NULL
. Vấn đề hiện tại là bạn có LEFT JOIN
Sai lầm. Điều này sẽ hoạt động:
SELECT v.user_id, v.version_id, vv.user_id
FROM versions v
LEFT JOIN versions_votes vv ON v.version_id = vv.version_id
AND vv.user_id = 39
WHERE vv.version_id IS NULL
ORDER BY v.created
LIMIT 1;
Bạn có một điều kiện bổ sung tham chiếu đến vv
trong WHERE
mệnh đề:AND vv.user_id != 39
. Có lẽ đang mong đợi rằng NULL != 39
sẽ đủ điều kiện, nhưng nó không. Thêm chi tiết trong câu trả lời có liên quan này:
Truy vấn với LEFT JOIN không trả về các hàng có số lượng là 0
Về cơ bản có ba kỹ thuật để thực hiện việc này:
Chọn các hàng không có trong bảng khác