sql >> Databáze >  >> RDS >> Sqlserver

WHERE IN (SELECT NonExistingColumnName) způsobí neočekávané chování

Toto je známý problém.

Následující příkaz bude chybně delete VŠECHNY řádky z tabulky uživatelů:

DELETE FROM users WHERE user_id IN (SELECT user_id FROM groups);

i když tabulka skupin nemá sloupec s názvem user_id.

Následující příkaz však vyvolá chybu:

DELETE FROM users WHERE user_id IN (SELECT g.user_id FROM groups g);

Msg 207, Level 16, State 1, Line 1
Invalid column name user_id

UPRAVIT

DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT OtherID FROM #LIST_TO_DELETE  )
 Invalid column name 'OtherID'

To vyvolá chybu, protože OtherID v #Orders neexistuje



  1. Funkce Oracle Analytic pro minimální hodnotu v seskupování

  2. Proč je můj výsledek při použití dílčího dotazu duplikován?

  3. Replikace MySQL:dočasně zabránit konkrétním SQL příkazům replikovat se na slave?

  4. Zabití procesu mysqld