0
team1
+----------+----------+
| id1      | name     |
+----------+----------+
| 1        | a        |
| 2        | b        |
| 3        | c        |
+----------+----------+

team2
+----------+----------+
| id2      | name     |
+----------+----------+
| 1        | d        |
| 2        | e        |
| 3        | f        |
+----------+----------+

play
+----------+----------+----------+
| id3      | id1      | id2      |
+----------+----------+----------+
| 1        | 1        | 1        |
| 2        | 1        | 3        |
| 3        | 2        | 1        |
| 4        | 3        | 2        |
| 5        | 2        | 3        |
+----------+----------+----------+

私はSQLが初めてです。集計条件の設定方法に苦戦しています。上記のテーブルで、合計 2 回以上プレーした、またはこれからプレーするチーム 2 のプレーヤーとプレーするチーム 1 のプレーヤーを見つけたいとします。したがって、基本的に、id2 の値が複数回表示される場合、id2 と競合する id1 の値はすべて結果の一部になるはずです。テーブルを見るだけで、冗長性がなければ id1 = 1 と id1 = 2 を返したいと思います。私はこれをどうするかについて頭を悩ませることはできません。

4

1 に答える 1

0

試す:

select distinct p1.id1
from play p1
join (select id2
      from play
      group by id2
      having count(*) > 1) p2
on p1.id2 = p2.id2
于 2012-11-19T07:38:55.697 に答える