2014-03-03 35 views
0

我有两列,名称和日期SQL选择行,其中不存在

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 

我需要选择每一个日期,不具有一定的人的声明。因此,例如,我需要约翰没有匹配行的日期列表,因为只有Sue和Joe在该日期有记录,所以我只会得到2/22/2014。

+0

'..GROUP按日期HAVING名称='John'' – Mihai

+0

@full:如果你看到其他人帮助你,这是值得添加+1答案看起来正确,因为这是我们感谢这里的人们为此付出努力的方式。例如,GoatCO的答案有一个SQL小提琴,因此可能适合您的情况。 – halfer

回答

2

您可以使用NOT IN

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

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

SELECT Date 
FROM table 
WHERE 'John' NOT IN Name 
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 
) 
1

您可以使用GROUP BYHAVING

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

语法可能需要调整的访问。

SQL服务器演示:SQL Fiddle