Du har ret i, at NULL cannot be equal to anything
.
Det du mangler er, at NULL ikke kan være ulige enten
.
NULL
sammenlignet med noget er altid NULL
. Problemet er, at du har LEFT JOIN
forkert. Dette burde virke:
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;
Du havde en yderligere betingelse, der refererede til vv
i WHERE
klausul:AND vv.user_id != 39
. Forventer sandsynligvis at NULL != 39
ville kvalificere sig, men det gør det ikke. Flere detaljer i dette relaterede svar:
Forespørgsel med LEFT JOIN returnerer ikke rækker for optælling af 0
Der er grundlæggende tre teknikker for at gøre dette:
Vælg rækker, der ikke findes i en anden tabel