Nó đang lấy giá trị của hs_id
từ truy vấn bên ngoài.
Hoàn toàn hợp lệ khi có một truy vấn không chiếu bất kỳ cột nào từ bảng đã chọn trong select
của nó danh sách.
Ví dụ
select 10 from HotelSupplier where id = 142
sẽ trả về một tập hợp kết quả có bao nhiêu hàng phù hợp với where
mệnh đề và giá trị 10
cho tất cả các hàng.
Các tham chiếu cột không đủ tiêu chuẩn được giải quyết từ phạm vi gần nhất trở ra ngoài, vì vậy điều này chỉ được coi là một truy vấn phụ có tương quan.
Kết quả của truy vấn này sẽ là xóa tất cả các hàng khỏi Photo
ở đâu hs_id
không rỗng miễn là HotelSupplier có ít nhất một hàng trong đó id =142 (và do đó, truy vấn con trả về ít nhất một hàng)
Có thể rõ ràng hơn một chút nếu bạn xem xét tác dụng của việc này là gì
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Điều này tất nhiên tương đương với
delete from Photo where Photo.hs_id = Photo.hs_id
Nhân tiện, đây là "lỗi" phổ biến nhất mà cá nhân tôi đã thấy báo cáo sai trên Microsoft Connect. Erland Sommarskog đưa nó vào danh sách mong muốn của mình cho SET STRICT_CHECKS ON