Działa to zgodnie z oczekiwaniami, ze względu na korelację między Kolumną A w zapytaniu wewnętrznym a zewnętrznym.
Ten powszechnie używany wzorzec skorelowanego zapytania jest prawidłowy
DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)
Usuwa wpisy w Tabeli A, które nie mają zależnego rekordu w Tabeli B.
Pokazuje, że możesz odwoływać się do kolumn TableA w skorelowanym zapytaniu. W zapytaniu
delete TableA where ColumnA in (select ColumnA from TableB)
Wewnętrzne zapytanie produkuje
- jeden wiersz na każdy rekord w Tabeli B
- jedna kolumna na każdy wiersz, której wartością jest KolumnaA z zewnętrznego zapytania
Tak więc DELETE przechodzi