Det fungerar som förväntat, på grund av korrelationen mellan kolumnA i den inre frågan till den yttre.
Detta ofta använda korrelerade frågemönster är giltigt
DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)
Den tar bort tabellA-poster som inte har en beroende post i tabellB.
Det visar att du kan referera till TableA-kolumner i en korrelerad fråga. I din fråga
delete TableA where ColumnA in (select ColumnA from TableB)
Den inre frågan producerar
- en rad för varje post i TabellB
- en kolumn för varje rad, vars värde är KolumnA från yttre fråga
Så DELETE går igenom