我有兩列,名稱和日期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