sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql IN výpis

Toto chování je správné podle norem ANSI.

Pokud se nekvalifikovaný název sloupce nevyřeší ve vnitřním rozsahu, bude uvažován vnější rozsah. Tak efektivně děláte neúmyslný korelovaný dílčí dotaz.

Pokud je tabulka profile obsahuje alespoň jeden řádek pak

 FROM users
 WHERE user_id IN (
        SELECT user_id FROM profile
        )

bude nakonec odpovídat všem řádkům v users (kromě všech, kde users.user_id IS NULL jako WHERE NULL IN (NULL) nevyhodnotí jako pravdivé). Chcete-li se tomuto možnému problému vyhnout, můžete použít dva názvy částí.

DELETE FROM users
WHERE  user_id IN (SELECT p.user_id
                   FROM   profile p) 

Dalo by chybu




  1. Zrušte serializaci PHP pomocí Microsoft SQL Query

  2. Nakonfigurujte vzdálené připojení RubyMine k Heroku PostgreSQL

  3. Jak formátovat datum a čas v SQLite

  4. SQLite Představuje funkci UNIXEPOCH().