Он принимает значение hs_id
из внешнего запроса.
Совершенно верно иметь запрос, который не проецирует ни одного столбца из выбранной таблицы в списке select
.
Например,
select 10 from HotelSupplier where id = 142
будетвозвращать результирующий набор с таким количеством строк, которое соответствует предложению where
и значению 10
для всех строк.
Неквалифицированные ссылки на столбцы разрешаются из ближайшей области видимости, так что это просто обрабатывается как коррелированная подпрограммазапрос.
Результатом этого запроса будет удаление всех строк из Photo
, где hs_id
не равно нулю, если в HotelSupplier есть хотя бы одна строка, где id = 142 (и поэтому подзапрос возвращает хотя бы однустрока)
Возможно, будет немного понятнее, если учесть, каков эффект от этого
delete from Photo where Photo.hs_id in (select Photo.hs_id)
Это, конечно, эквивалентно
delete from Photo where Photo.hs_id = Photo.hs_id
Кстатиэто, безусловно, самая распространенная «ошибка», о которой я лично ошибочно сообщал в Microsoft Connect.Эрланд Соммарског включает его в свой список желаний 1027 * для SET STRICT_CHECKS ON