Cela fonctionne comme prévu, en raison de la corrélation entre ColumnA dans la requête interne et externe.
Ce modèle de requête corrélé couramment utilisé est valide
DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)
Il supprime les entrées TableA qui n'ont pas d'enregistrement dépendant dans TableB.
Il montre que vous pouvez référencer des colonnes TableA dans une requête corrélée. Dans votre requête
delete TableA where ColumnA in (select ColumnA from TableB)
La requête interne produit
- une ligne pour chaque enregistrement dans TableB
- une colonne pour chaque ligne, dont la valeur est ColumnA de la requête externe
Ainsi, le DELETE passe par