一个查询不投影其select
列表中所选表的任何列是完全有效的。
例如
select 10 from Hotelsupplier where id = 142
将返回一个结果集,其中包含与该where
子句匹配的行数以及10
所有行的值的行数。
不合格的列引用是从最接近的范围向外解析的,因此这仅被视为相关的子查询。
该查询的结果将是删除Photo
其中hs_id
不为null的所有行,只要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上错误地看到的最常见的“错误”。Erland Sommarskog将其包含在他的愿望清单中,用于SET STRICT_CHECKS ON