Похоже, что в PostgreSQL empty_field != 1
(или какое-либо другое значение) равно FALSE .Если это правда, может кто-нибудь сказать мне, как сравнить с пустыми полями?
У меня есть следующий запрос, который переводится как «выбрать все сообщения в группе пользователей, за которые еще не проголосовали:
SELECT p.id, p.body, p.author_id, p.created_at
FROM posts p
LEFT OUTER JOIN votes v ON v.post_id = p.id
WHERE p.group_id = 1
AND v.user_id != 1
, и ничего не выводится, хотя голосов таблица пуста. Может быть, что-то не так с моим запросом, а не с логикой выше?
Редактировать: похоже, что изменение v.user_id != 1
на v.user_id IS DISTINCT FROM 1
сделалозадание. Из документации PostgreSQL:
Для ненулевых входных данных IS DISTINCT FROM аналогичен оператору <>. Однако, когда оба входных значения равны NULL, он возвращает falseВвод равен нулю, он вернет истину.