1

我有两个表,一个包含所有当前用户的 USER 表。下一个表称为任务,有很多信息,其中一列是 PointPerson,与用户表中的一列相同。此列包含不再是用户的人的条目。这就是我想从 SELECT 语句中得到的。我想要用户表中不存在的任务表中的所有用户。

这是我尝试过的,但我没有得到任何无法正确的回复:

SELECT DISTINCT TSK.PointPerson FROM [Task] AS TSK
WHERE NOT EXISTS (
SELECT DisplayName FROM [User]
)

我做错了什么,如何获得预期的结果?

4

3 回答 3

8

尝试这个:

SELECT DISTINCT TSK.PointPerson FROM [Task] AS TSK
WHERE TSK.PointPerson NOT IN (
SELECT DisplayName FROM [User]
)

或另一种方法:

SELECT DISTINCT TSK.PointPerson FROM [Task] AS TSK
LEFT JOIN [User] AS U ON U.DisplayName = TSK.PointPerson 
WHERE U.DisplayName IS NULL
于 2013-10-23T19:28:44.247 回答
2

你可以这样尝试:-

SELECT DISTINCT TSK.PointPerson
FROM [Task]
WHERE NOT EXISTS 
    (SELECT DisplayName  
     FROM User
     WHERE Task.name = User.name)

或使用这样的 LEFT JOIN:-

SELECT DISTINCT TSK.PointPerson
FROM Task t1
LEFT JOIN User t2 ON t2.name = t1.name
WHERE t2.name IS NULL
于 2013-10-23T19:29:36.437 回答
1

另一种方法来做到这一点

SELECT PointPerson 
FROM [Task]
EXCEPT
SELECT DisplayName 
FROM [User]
于 2013-10-23T19:42:49.660 回答