Sie haben Recht, dass NULL cannot be equal to anything
.
Was Sie vermissen, ist, dass NULL nicht ungleich sein kann , entweder
.
NULL
verglichen mit allem ist immer NULL
. Das vorliegende Problem ist, dass Sie den LEFT JOIN
erhalten haben falsch. Das sollte funktionieren:
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;
Sie hatten eine zusätzliche Bedingung, die auf vv
verwies im WHERE
Klausel:AND vv.user_id != 39
. Erwartet wahrscheinlich, dass NULL != 39
würde sich qualifizieren, tut es aber nicht. Weitere Details in dieser zugehörigen Antwort:
Abfrage mit LEFT JOIN gibt keine Zeilen für die Anzahl 0 zurück
Grundsätzlich gibt es drei Techniken um dies zu tun:
Wählen Sie Zeilen aus, die in keiner anderen Tabelle vorhanden sind