Ele está tomando o valor de
hs_id
da consulta externa. É perfeitamente válido ter uma consulta que não projete nenhuma coluna da tabela selecionada em seu
select
Lista. Por exemplo
select 10 from HotelSupplier where id = 142
retornaria um conjunto de resultados com tantas linhas quantas correspondessem ao
where
cláusula e o valor 10
para todas as linhas. Referências de coluna não qualificadas são resolvidas do escopo mais próximo para fora, então isso é tratado apenas como uma subconsulta correlacionada.
O resultado desta consulta será excluir todas as linhas de
Photo
onde hs_id
não é nulo desde que HotelSupplier tenha pelo menos uma linha onde id =142 (e assim a subconsulta retorna pelo menos uma linha) Pode ser um pouco mais claro se você considerar qual é o efeito disso
delete from Photo where Photo.hs_id in (select Photo.hs_id)
É claro que isso é equivalente a
delete from Photo where Photo.hs_id = Photo.hs_id
A propósito, este é de longe o "bug" mais comum que eu pessoalmente vi relatado erroneamente no Microsoft Connect. Erland Sommarskog inclui em sua lista de desejos para
SET STRICT_CHECKS ON