Sta prendendo il valore di hs_id dalla query esterna.
È perfettamente valido avere una query che non proietta alcuna colonna dalla tabella selezionata nella sua select elenco.
Ad esempio
select 10 from HotelSupplier where id = 142
restituirebbe un set di risultati con tante righe quante corrispondono a where clausola e il valore 10 per tutte le righe.
I riferimenti di colonna non qualificati vengono risolti dall'ambito più vicino verso l'esterno, quindi questo viene trattato semplicemente come una query secondaria correlata.
Il risultato di questa query sarà l'eliminazione di tutte le righe da Photo dove hs_id non è null finché HotelSupplier ha almeno una riga in cui id =142 (e quindi la sottoquery restituisce almeno una riga)
Potrebbe essere un po' più chiaro se consideri l'effetto di ciò
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Questo è ovviamente equivalente a
delete from Photo where Photo.hs_id = Photo.hs_id
A proposito, questo è di gran lunga il "bug" più comune che personalmente ho visto erroneamente segnalato su Microsoft Connect. Erland Sommarskog lo include nella sua lista dei desideri per SET STRICT_CHECKS ON