Det tager værdien af hs_id fra den ydre forespørgsel.
Det er helt gyldigt at have en forespørgsel, der ikke projicerer nogen kolonner fra den valgte tabel i dens select liste.
For eksempel
select 10 from HotelSupplier where id = 142
ville returnere et resultatsæt med så mange rækker som matchede where klausul og værdien 10 for alle rækker.
Ukvalificerede kolonnereferencer løses fra det nærmeste omfang og udad, så dette bliver bare behandlet som en korreleret underforespørgsel.
Resultatet af denne forespørgsel vil være at slette alle rækker fra Photo hvor hs_id er ikke null, så længe HotelSupplier har mindst én række, hvor id =142 (og så underforespørgslen returnerer mindst én række)
Det er måske lidt klarere, hvis du overvejer, hvad effekten af dette er
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Dette svarer naturligvis til
delete from Photo where Photo.hs_id = Photo.hs_id
Dette er i øvrigt langt den mest almindelige "bug", som jeg personligt har set fejlagtigt rapporteret på Microsoft Connect. Erland Sommarskog inkluderer det på sin ønskeliste til SET STRICT_CHECKS ON