SQL
SELECT t.id
FROM TABLE t
WHERE t.year in(2001,2002,2003)
GROUP BY t.id
サンプル SqlFiddle
http://sqlfiddle.com/#!2/4ec9f/2/0
説明
特定の年の行のみを表示するようにデータ セットをフィルター処理する必要があるため、それを where 句に入力しWHERE t.year in(2001,2002,2003)
ます。
1 つの ID が複数の年になる可能性があるため、結果セットには重複が含まれます。重複を削除するには、ID でGROUP BYするか、 DISTINCTステートメントを使用して一意の要素のみを表示します。
アップデート
コメントに基づいて、3 年すべての ID のみを表示するバージョンを次に示します。DISTINCT t.YEAR
1 つの年が複数回繰り返される可能性がある ID のカウントを避けるために使用します。このHAVING COUNT(DISTINCT t.YEAR) = 3
部分により、3 年すべてを含む ID のみが含まれるようになります。
SELECT t.id
FROM years t
WHERE t.year in(2001,2002,2003)
GROUP BY t.id
HAVING COUNT(DISTINCT t.YEAR) = 3
ID の一意の年のみをカウントするロジックを示すために、id 3 に 2003 年の 2 つの行があるデータ セットを含むsqlFiddleを更新しました。