PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego null równa się liczba całkowita w WHERE?

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niekompatybilność Openshift i net-ssh? (2.9.3-beta1 vs 2.9.2)

  2. Czy istnieje sposób na wyłączenie przeciążania funkcji w Postgresie?

  3. KitchenPC i Ironpython

  4. Zwróć typ tabeli z funkcji A w PostgreSQL

  5. Podczas próby zniszczenia kontrolera pojawia się błąd pg