Den tar värdet hs_id
från den yttre frågan.
Det är helt giltigt att ha en fråga som inte projicerar några kolumner från den valda tabellen i dess select
lista.
Till exempel
select 10 from HotelSupplier where id = 142
skulle returnera en resultatuppsättning med så många rader som matchade where
sats och värdet 10
för alla rader.
Okvalificerade kolumnreferenser löses från närmaste omfattning och utåt så detta behandlas bara som en korrelerad underfråga.
Resultatet av denna fråga kommer att bli att radera alla rader från Photo
där hs_id
är inte null så länge som HotelSupplier har minst en rad där id =142 (och så underfrågan returnerar minst en rad)
Det kanske blir lite tydligare om du tänker på vad effekten av detta är
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Detta motsvarar givetvis
delete from Photo where Photo.hs_id = Photo.hs_id
Detta är förresten den absolut vanligaste "buggen" som jag personligen har sett felaktigt rapporterad på Microsoft Connect. Erland Sommarskog inkluderar den i sin önskelista för SET STRICT_CHECKS ON