SQL选择不存在的行

时间:2014-03-03 21:58:50

标签: sql ms-access

我有两列,名称和日期

Name       Date
John       2/21/2014
Joe        2/21/2014
Sue        2/22/2014
Joe        2/22/2014
Steve      2/23/2014
John       2/23/2014

我需要一个声明,选择每个没有某个人的日期。

所以,例如,我需要一个没有John匹配行的日期列表,我会得到2014年2月22日,因为只有Sue和Joe在该日期有记录。

4 个答案:

答案 0 :(得分:2)

您可以使用NOT IN

SELECT DISTINCT Date
FROM Table
WHERE Date NOT IN
(
   SELECT Date FROM Table where Name = 'John'
)

答案 1 :(得分:1)

SELECT DISTINCT t.Date
FROM MyTable t
WHERE NOT EXISTS (
    SELECT 1
    FROM MyTable t2
    WHERE t2.Name = 'John'
    AND t2.Date = t.Date
)

答案 2 :(得分:1)

您可以使用GROUP BYHAVING

SELECT Date
FROM Table1
GROUP BY Date
HAVING MAX(CASE WHEN Name = 'John' THEN 1 END) IS NULL

可能需要针对Access调整语法。

SQL Server演示:SQL Fiddle

答案 3 :(得分:0)

试试这个,也许有帮助! ;)

SELECT Date
FROM table
WHERE 'John' NOT IN Name