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