Anda benar bahwa NULL cannot be equal to anything
.
Yang Anda lewatkan adalah NULL tidak boleh tidak sama , baik
.
NULL
dibandingkan dengan apa pun selalu NULL
. Masalahnya adalah Anda mendapatkan LEFT JOIN
salah. Ini akan berhasil:
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;
Anda memiliki ketentuan tambahan yang merujuk pada vv
di WHERE
klausa:AND vv.user_id != 39
. Mungkin mengharapkan NULL != 39
akan memenuhi syarat, tetapi tidak. Detail lebih lanjut dalam jawaban terkait ini:
Kueri dengan LEFT JOIN tidak mengembalikan baris untuk hitungan 0
Pada dasarnya ada tiga teknik untuk melakukan ini:
Pilih baris yang tidak ada di tabel lain