【发布时间】:2013-09-02 16:41:57
【问题描述】:
请看下表结构:
CREATE TABLE Person (id int not null, PID INT NOT NULL, Name VARCHAR(50))
CREATE TABLE [Order] (OID INT NOT NULL, PID INT NOT NULL)
INSERT INTO Person VALUES (1,1,'Ian')
INSERT INTO Person VALUES (2,2,'Maria')
INSERT INTO [Order] values (1,1)
为什么下面的查询会返回两个结果:
select * from Person WHERE id IN (SELECT ID FROM [Order])
订单中不存在 ID。为什么上面的查询会产生结果?我希望它会出错,因为我不会按顺序存在。
【问题讨论】:
-
ID不在[order]中(你有OID&PID) -
它不会返回两个结果。
-
@AlexK,这就是重点。我预计查询会出错,但不会。
-
我不认为这是一个坏问题......是的,这是一个错字,但我也希望它会给出一个错误......也许问题的标题应该是改进
-
您没有错误,因为 ID 存在于 Person 中。您可以在子查询字段列表中使用主表的字段。
标签: sql sql-server sql-server-2008