Přebírá hodnotu hs_id
z vnějšího dotazu.
Je naprosto platné mít dotaz, který nepromítá žádné sloupce z vybrané tabulky ve svém select
seznam.
Například
select 10 from HotelSupplier where id = 142
vrátí sadu výsledků s tolika řádky, kolik odpovídá where
klauzule a hodnotu 10
pro všechny řádky.
Nekvalifikované odkazy na sloupce jsou vyřešeny od nejbližšího rozsahu směrem ven, takže se s tím bude zacházet jako s korelovaným dílčím dotazem.
Výsledkem tohoto dotazu bude smazání všech řádků z Photo
kde hs_id
není null, pokud má HotelSupplier alespoň jeden řádek, kde id =142 (a tak poddotaz vrátí alespoň jeden řádek)
Mohlo by to být trochu jasnější, když zvážíte, jaký to má efekt
delete from Photo where Photo.hs_id in (select Photo.hs_id)
To je samozřejmě ekvivalentní s
delete from Photo where Photo.hs_id = Photo.hs_id
Mimochodem, toto je zdaleka nejběžnější „chyba“, kterou jsem osobně viděl chybně hlášenou na Microsoft Connect. Erland Sommarskog to zahrnul do svého seznamu přání pro SET STRICT_CHECKS ON