Du har rätt i att NULL cannot be equal to anything
.
Det du saknar är att NULL inte kan vara ojämlika antingen
.
NULL
jämfört med någonting är alltid NULL
. Problemet är att du fick LEFT JOIN
fel. Detta borde fungera:
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 hade ett ytterligare tillstånd som hänvisar till vv
i WHERE
klausul:AND vv.user_id != 39
. Förväntar mig förmodligen att NULL != 39
skulle kvalificera sig, men det gör det inte. Mer information i detta relaterade svar:
Fråga med LEFT JOIN returnerar inte rader för antalet 0
Det finns i princip tre tekniker för att göra detta:
Välj rader som inte finns i andra tabeller