2011-01-30 7 views
1

私はこのようなテーブルを持っています。年を示す人は人の一部ではありません

 
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 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); 
+0

もう一度、どちらにも運がありません。最後の1つはまだ私にすべての年を与えます。 – Brian

+0

不可能な場合は、 'あなたのテーブルからperson = 9;を選択し、'あなたのテーブルから別の年を選択する 'をチェックしてください – ajreal

4

試してみてください。

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

乾杯、あなたが全体のコードを入力して気にしていますか? – Brian

+0

それはあまりにも難しいはずはありません 'SELECT year WHERE year NOT IN(SELECT year WHERE person = 9)GROUP BY year;' – mathk

+0

人は9人いるにもかかわらず、うまく動作しません。 – Brian

関連する問題