PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо null е равно на цяло число в WHERE?

Вие сте прав, че 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

Основно има три техники за да направите това:
Изберете редове, които не присъстват в друга таблица




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql отдалечен достъп без pg_hba.conf запис за хост

  2. UUID с възможност за сортиране и замяна на ActiveRecord::Base

  3. Как да преведа PostgreSQL OID с помощта на python

  4. python json dumps поставя обект в обект при връщане на row_to_json

  5. Свързване на libpqxx от Visual Studio 2015 на Windows 10