Masz rację, że NULL cannot be equal to anything
.
To, czego ci brakuje, to fakt, że NULL nie może być nierówny , albo
.
NULL
w porównaniu do czegokolwiek jest zawsze NULL
. Problem polega na tym, że masz LEFT JOIN
zło. To powinno działać:
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;
Masz dodatkowy warunek odwołujący się do vv
w WHERE
klauzula:AND vv.user_id != 39
. Prawdopodobnie spodziewam się, że NULL != 39
kwalifikuje się, ale tak nie jest. Więcej szczegółów w tej powiązanej odpowiedzi:
Zapytanie z LEFT JOIN nie zwraca wierszy dla liczby 0
Istnieją zasadniczo trzy techniki w tym celu:
Wybierz wiersze, których nie ma w innej tabeli