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

SQL Delete vymaže tabulku namísto chyb

Funguje to podle očekávání díky korelaci mezi sloupcem A ve vnitřním dotazu a vnějším.

Tento běžně používaný vzor korelovaného dotazu je platný

DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)

Odebere položky tabulky A, které nemají závislý záznam v tabulce B.

Ukazuje, že v korelovaném dotazu můžete odkazovat na sloupce TableA. Ve vašem dotazu

delete TableA where ColumnA in (select ColumnA from TableB)

Vnitřní dotaz produkuje

  • jeden řádek pro každý záznam v tabulce B
  • jeden sloupec pro každý řádek, jehož hodnota je ColumnA z vnějšího dotazu

Takže DELETE projde



  1. Připojte se k postgres v kontejneru docker z hostitelského počítače

  2. Mohu upravit objekt mysqli_result v php?

  3. Spuštění Total-Order By Date v SQLite

  4. Hodnota atributu nebo prvku ORACLE SQL ORA-22814 je větší, než je uvedeno v typu