Je hebt gelijk dat NULL cannot be equal to anything
.
Wat je mist is dat NULL niet ongelijk kan zijn , ofwel
.
NULL
vergeleken met iets is altijd NULL
. Het probleem bij de hand is dat je de LEFT JOIN
. hebt mis. Dit zou moeten werken:
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;
U had een aanvullende voorwaarde die verwijst naar vv
in de WHERE
clausule:AND vv.user_id != 39
. Waarschijnlijk verwacht u dat NULL != 39
zou in aanmerking komen, maar dat doet het niet. Meer details in dit gerelateerde antwoord:
Query met LEFT JOIN retourneert geen rijen voor telling van 0
Er zijn in principe drie technieken om dit te doen:
Selecteer rijen die niet in een andere tabel voorkomen