-2

プログラム「バスケットボール」と「フットボール」の両方の行を持つテーブルからすべての ID を選択したい

次のようなテーブルがあるとします。

Id  program
1   basketball
2   football
3   basketball
2   basketball
1   football
4   football
5   basketball

次のような結果を得るにはどうすればよいですか。

id
1
2
4

3 に答える 3

5

idとの両方の値を持つfootballを返したいのでbasketball、次を使用して結果を取得できます。

select id
from yt
where program in ('basketball', 'football')
group by id
having count(distinct program) = 2;

SQL Fiddle with Demoを参照してください。

テーブルに複数回参加することでも実行できます。

select t1.id
from yt t1
inner join yt t2
  on t1.id = t2.id
where t1.program = 'basketball'
  and t2.program = 'football';

デモで SQL Fiddle を参照してください

于 2013-04-24T13:35:26.693 に答える
-1

INまたはOR構文でこれを行うことができます。

SELECT id
FROM table
WHERE program = 'basketball'
OR program = 'football';

最初の 2 つの結果のみを取得する場合は、最後に追加LIMIT 2します。

ところで、主キーのないテーブルを持つことは本当に悪い習慣です。このテーブルにインデックスを付ける方法がないため、パフォーマンスが非常に悪くなります。

于 2013-04-24T13:40:06.583 に答える