SQL Server,相关子查询中的多个条件

| 我试图在相关子查询中使用复合条件,但未返回预期结果。您能否看一下下面的示例,看看为什么第一个查询无法解决,而第二个查询却解决了? 创建表并填充行:
CREATE TABLE TestCase
(
    Seq INT IDENTITY PRIMARY KEY,
    ID INT,
    Name VARCHAR(50)
)


INSERT INTO TestCase
VALUES
(100, \'MJ\'),
(110, \'MJ\'),
(120, \'AK\'),
(130, \'AK\')
第一个查询:
SELECT A.ID, A.Name FROM TestCase AS A
WHERE A.ID IN (SELECT ID FROM TestCase WHERE ID <> A.ID AND Name = A.Name)
(0行受影响) 使用EXISTS进行第二次查询:
SELECT A.ID, A.Name FROM TestCase AS A
WHERE EXISTS (SELECT ID FROM TestCase WHERE ID <> A.ID AND Name = A.Name)
(受影响的4行) 假设两个查询都应返回全部四行,但第一行不返回;我不确定为什么只有第二个查询返回四行。有人可以帮忙吗?谢谢。     
已邀请:
第一个查询返回0条记录的原因是因为您试图将行的ID与子查询返回的行“ 3”进行匹配,但是子查询相关联以排除等于当前记录“ 4”的所有ID。因此,“ 5”子句将始终为false。 第二个查询不是试图将返回的行与A.ID进行匹配,而只是存在存在具有不同ID但名称相同的行。     

要回复问题请先登录注册