Hai ragione sul fatto che NULL cannot be equal to anything
.
Quello che ti manca è che NULL non può essere disuguale , o
.
NULL
rispetto a qualsiasi cosa è sempre NULL
. Il problema è che hai il LEFT JOIN
sbagliato. Questo dovrebbe funzionare:
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;
Hai avuto una condizione aggiuntiva che fa riferimento a vv
nel WHERE
clausola:AND vv.user_id != 39
. Probabilmente mi aspettavo che NULL != 39
si qualificherebbe, ma non è così. Maggiori dettagli in questa risposta correlata:
Query con LEFT JOIN che non restituisce righe per il conteggio di 0
Esistono fondamentalmente tre tecniche per farlo:
Seleziona le righe che non sono presenti in un'altra tabella