2011-01-30 40 views
1

我有一張這樣的桌子。Show year person has been been part of

 
id Person year 
1 4 2001 
2 7 2001 
3 5 2001 
4 9 2001 
5 4 2001 
6 7 2002 
7 2 2002 
8 5 2002 
9 4 2002 
10 6 2002 
11 6 2003 
12 4 2003 
13 9 2003 
14 2 2004 
15 3 2004 
16 7 2004 
17 5 2004 
18 7 2004 
19 9 2005 
20 8 2005

我希望它能夠打印所有'9'未曾參與過的年份。

我覺得這很簡單,就像簡單地把WHERE person!= 9 GROUP一年一樣,但這不起作用,就好像它忽略了我的where命令一樣。

然而,當我說人= 9時,它確實會反過來 - 那麼我只能得到他一直參與的那些年。

我已經嘗試加入與自己的表。但沒有運氣。

回答

0
select distinct yr.year 
from your_table as yr 
left join 
(
    select distinct year 
    from your_table 
    where person=9 
) as not_exist 
on yr.year=not_exist.year 
where not_exist.year is null; 

OR

select distinct year from your_table 
where year not in (select distinct year from your_table where person=9); 
4

嘗試:

... WHERE year NOT IN (SELECT year WHERE person = 9) ... 
+0

乾杯,你介意鍵入整個代碼? – Brian 2011-01-30 13:23:50

+0

它不應該太困難`選擇年份哪裏一年沒有(選擇年份哪裏人= 9)GROUP BY年;` – mathk 2011-01-30 13:27:08

相關問題