我有两列,名称和日期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。
我有两列,名称和日期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。
您可以使用NOT IN
:
SELECT DISTINCT Date
FROM Table
WHERE Date NOT IN
(
SELECT Date FROM Table where Name = 'John'
)
试试这个,也许它有帮助! ;)
SELECT Date
FROM table
WHERE 'John' NOT IN Name
SELECT DISTINCT t.Date
FROM MyTable t
WHERE NOT EXISTS (
SELECT 1
FROM MyTable t2
WHERE t2.Name = 'John'
AND t2.Date = t.Date
)
您可以使用GROUP BY
和HAVING
:
SELECT Date
FROM Table1
GROUP BY Date
HAVING MAX(CASE WHEN Name = 'John' THEN 1 END) IS NULL
语法可能需要调整的访问。
SQL服务器演示:SQL Fiddle
'..GROUP按日期HAVING名称='John'' – Mihai
@full:如果你看到其他人帮助你,这是值得添加+1答案看起来正确,因为这是我们感谢这里的人们为此付出努力的方式。例如,GoatCO的答案有一个SQL小提琴,因此可能适合您的情况。 – halfer