3

と の間の m-2-m 関係の結合テーブルを指定するboothと、user

+-----------+------------------+
| booth_id  |          user_id |
+-----------+------------------+
|         1 |                1 |
|         1 |                2 |
|         1 |                5 |
|         1 |                9 |
|         2 |                1 |
|         2 |                2 |
|         2 |                5 |
|         2 |               10 |
|         3 |                1 |
|         3 |                2 |
|         3 |                3 |
|         3 |                4 |
|         3 |                6 |
|         3 |               11 |
+-----------+------------------+

boothユーザー ID のサブセット間で共通するレコードの別個のセットを取得するにはどうすればよいですか? たとえば、user_idの値が与えられた場合1,2,3、結果セットにはboothid のみが含まれると予想されます。これは、上記の結合テーブルで提供された all の間で3唯一共通しているためです。boothuser_id

これを達成するためにMySQLにキーワードが欠けていることを願っています。私がこれまでに行った中で最も遠いのは using... user_id = all (1,2,3)ですが、これは常に空の結果セットを返しています(理由は理解していると思います)

4

1 に答える 1

1

このための SQL クエリは次のようになります。

select booth_id from table1 where [user_id]
in (1,2,3) group by booth_id having count(booth_id) = 
(select count(distinct([user_id])) from table1 where [user_id] in (1,2,3))

これが MySQL クエリの作成に役立つ場合。

于 2012-10-05T13:34:41.643 に答える