Вие сте прав, че NULL cannot be equal to anything .
Това, което пропускате е, че NULL не може да бъде неравен или
.
NULL в сравнение с всичко винаги е NULL . Проблемът е, че имате LEFT JOIN грешно. Това трябва да работи:
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;
Имахте допълнително условие, препращащо към vv в WHERE клауза:AND vv.user_id != 39 . Вероятно очаква това NULL != 39 би отговаряло на изискванията, но не е така. Повече подробности в този свързан отговор:
Заявка с LEFT JOIN не връща редове за брой 0
Основно има три техники за да направите това:
Изберете редове, които не присъстват в друга таблица