Вие сте прав, че 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
Основно има три техники за да направите това:
Изберете редове, които не присъстват в друга таблица