sql >> Database >  >> RDS >> PostgreSQL

Waarom is null gelijk aan geheel getal in WHERE?

Je hebt gelijk dat NULL cannot be equal to anything .
Wat je mist is dat NULL niet ongelijk kan zijn , ofwel .

NULL vergeleken met iets is altijd NULL . Het probleem bij de hand is dat je de LEFT JOIN . hebt mis. Dit zou moeten werken:

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;

U had een aanvullende voorwaarde die verwijst naar vv in de WHERE clausule:AND vv.user_id != 39 . Waarschijnlijk verwacht u dat NULL != 39 zou in aanmerking komen, maar dat doet het niet. Meer details in dit gerelateerde antwoord:
Query met LEFT JOIN retourneert geen rijen voor telling van 0

Er zijn in principe drie technieken om dit te doen:
Selecteer rijen die niet in een andere tabel voorkomen




  1. Sequelize, MySQL - Filteren van rijen in tabel met JSON-kolomwaarden

  2. Hoe draaien in Oracle 10g

  3. Is er een manier om een ​​json-array naar server-side php te sturen en de waarden in een tabel in te voegen?

  4. Wanneer de code wordt uitgevoerd, wordt de jdbc-verbinding geopend, maar worden de tabelgegevens niet afgedrukt. Wat is er mis met deze code?