Pobiera wartość hs_id
z zewnętrznego zapytania.
Dobrze jest mieć zapytanie, które nie wyświetla żadnych kolumn z wybranej tabeli w swoim select
lista.
Na przykład
select 10 from HotelSupplier where id = 142
zwróci zestaw wyników z tyloma wierszami, ile pasuje do where
klauzula i wartość 10
dla wszystkich rzędów.
Niekwalifikowane odwołania do kolumn są rozwiązywane z najbliższego zakresu na zewnątrz, więc jest to traktowane jako skorelowane zapytanie podrzędne.
Wynikiem tego zapytania będzie usunięcie wszystkich wierszy z Photo
gdzie hs_id
nie jest null, o ile HotelSupplier ma co najmniej jeden wiersz, gdzie id =142 (a więc podzapytanie zwraca co najmniej jeden wiersz)
Może to być nieco jaśniejsze, jeśli weźmiesz pod uwagę, jaki jest to efekt
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Jest to oczywiście równoznaczne z
delete from Photo where Photo.hs_id = Photo.hs_id
Nawiasem mówiąc, jest to zdecydowanie najczęstszy „błąd”, który osobiście widziałem, błędnie zgłoszony w Microsoft Connect. Erland Sommarskog umieszcza go na swojej liście życzeń dla SET STRICT_CHECKS ON