2014-07-13 54 views
3

select player,date from nba.player_stats where tm='NOP';SQL - 選擇只有球員和日期當日期不包含球員

這將返回在出場球員的NBA球員新奧爾良鵜鶘和比賽日期的一列列有。每個日期有多個玩家。當玩家受傷且不玩時,該玩家不會在該玩家專欄中顯示該特定日期。

我想寫一個查詢,在那裏我可以說WHERE player ='Ryan Anderson'之類的東西不存在,返回這些日期以及在這些日期播放的玩家列表。任何幫助將不勝感激。

對不起,我無法格式化表格。它被列爲像這樣,除了有更多的日期包括:

**Player------------Date** 

Ryan Anderson 2014-01-01 

Jrue Holiday 2014-01-01 

Anthony Davis 2014-01-01 

Tyreke Evans 2014-01-01 

Anthony Morrow 2014-01-01 

Eric Gordon 2014-01-01 

Brian Roberts 2014-01-01 

Jeff Withey 2014-01-01 

Darius Miller 2014-01-01 

Al-Farouq Aminu 2014-01-01 

Austin Rivers 2014-01-01 

Alexis Ajinca 2014-01-01 

Greg Stiemsma 2014-01-01 

Alexis Ajinca 2014-01-04 

Eric Gordon 2014-01-04 

Jrue Holiday 2014-01-04 

Tyreke Evans 2014-01-04 

Al-Farouq Aminu 2014-01-04 

Anthony Davis 2014-01-04 

Brian Roberts 2014-01-04 

Jeff Withey 2014-01-04 

Greg Stiemsma 2014-01-04 

Darius Miller 2014-01-04 
+2

你可以顯示錶結構,也可能是示例數據? –

回答

2

這將顯示的日期發揮所有球員,當萊恩 - 安德森並沒有發揮

+1

太好了,這工作,非常感謝你。 – mattdh12

0

我認爲下面會做的伎倆,試圖如果可以的話:

select player,date from nba.player_stats 
where date not in (select date from nba.player_status where player='Ryan Anderson') order by date desc; 
2

有很多寫查詢的方法,這裏有幾個例子(都選擇了Ryan Anderson沒有玩過的NOP玩家);

使用NOT IN,只需查看他彈奏的日期並排除這些日期;

SELECT player, date 
FROM player_stats 
WHERE tm = 'NOP' 
AND date NOT IN (
    SELECT date FROM player_stats WHERE player='Ryan Anderson' 
); 

使用NOT EXISTS,排除有同名球員和名字'Ryan Anderson'的球;

SELECT player, date 
FROM player_stats 
WHERE tm = 'NOP' 
AND NOT EXISTS (
    SELECT 1 FROM player_stats ps 
    WHERE player='Ryan Anderson' AND player_stats.date = ps.date 
); 

使用LEFT JOIN,儘量配合,如果沒有匹配名爲「萊恩 - 安德森」球員和相同的日期,顯示;

SELECT ps.player, ps.date 
FROM player_stats ps 
LEFT JOIN player_stats ps2 
    ON ps2.player='Ryan Anderson' AND ps.date = ps2.date 
WHERE ps.tm = 'NOP' AND ps2.player IS NULL 

A simple SQLfiddle to test all of them

相關問題