Het neemt de waarde van hs_id
van de buitenste vraag.
Het is perfect geldig om een query te hebben die geen kolommen uit de geselecteerde tabel projecteert in zijn select
lijst.
Bijvoorbeeld
select 10 from HotelSupplier where id = 142
zou een resultatenset retourneren met zoveel rijen als overeenkomend met de where
clausule en de waarde 10
voor alle rijen.
Niet-gekwalificeerde kolomverwijzingen worden opgelost vanaf het dichtstbijzijnde bereik, dus dit wordt gewoon behandeld als een gecorreleerde subquery.
Het resultaat van deze zoekopdracht is dat alle rijen uit Photo
. worden verwijderd waar hs_id
is niet null zolang HotelSupplier ten minste één rij heeft waarbij id =142 (en dus de subquery retourneert ten minste één rij)
Het wordt misschien wat duidelijker als je bedenkt wat het effect hiervan is
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Dit is natuurlijk gelijk aan
delete from Photo where Photo.hs_id = Photo.hs_id
Dit is trouwens verreweg de meest voorkomende "bug" die ik persoonlijk ten onrechte op Microsoft Connect heb gezien. Erland Sommarskog neemt het op in zijn verlanglijst voor SET STRICT_CHECKS ON