hs_idの値を取得しています 外部クエリから。
selectで、選択したテーブルの列を投影しないクエリを使用することは完全に有効です。 リスト。
例
select 10 from HotelSupplier where id = 142
whereと一致する数の行を含む結果セットを返します 句と値10 すべての行に対して。
修飾されていない列参照は、最も近いスコープから外側に向かって解決されるため、これは相関サブクエリとして扱われます。
このクエリの結果は、Photoからすべての行を削除することです。 ここで、hs_id HotelSupplierにid=142の行が少なくとも1つある限り、nullにはなりません(したがって、サブクエリは少なくとも1つの行を返します)
これの効果を考えれば、もう少し明確になるかもしれません
delete from Photo where Photo.hs_id in (select Photo.hs_id)
もちろんこれは
と同等ですdelete from Photo where Photo.hs_id = Photo.hs_id
ちなみに、これは私が個人的にMicrosoftConnectで誤って報告した最も一般的な「バグ」です。 Erland Sommarskogは、SET STRICT_CHECKS ONのウィッシュリストにそれを含めています。