抱歉标题不好-我想不出更好的标题。
从本质上讲,SQL Server 2008 正在处理一个我预计会失败的子查询。
这是一个简单的例子:
CREATE TABLE UserDemographics
(
UserID INT,
UserName NVARCHAR(500)
)
CREATE TABLE UserAddresses
(
UserAddressID INT,
Address NVARCHAR(500)
)
INSERT INTO UserDemographics(UserID, UserName) VALUES(1, 'Joe'), (2, 'Sam'), (3, 'Ed')
INSERT INTO UserAddresses(UserAddressID, Address) VALUES(1, '1st Street'), (2, 'Old Address 1'), (3, 'Old Address 2')
DELETE FROM UserDemographics
WHERE UserID IN
(
SELECT UserID FROM UserAddresses
)
这就是有趣的原因:UserAddresses
没有名为UserID
. 相关子查询正在选择它正在查询的表中不存在的列。
显然,它与相关子查询有关 -UserID
是表中的一列UserDemographics
,出于某种原因,数据库正在进行该引用。
也许该UserDemographics
表隐含在子查询的 from-list 中。
谁能解释一下?