1

持っているユーザー評価テーブルのクエリを作成するのに問題があります。

現在、テーブルは次のようになっています。

+-----+----------+----------+
| id  | video_id | user_id  |
+-----+----------+----------+
| 1   |       1  |        1 |
| 2   |       2  |       50 |
| 3   |       1  |      115 |
| 4   |       2  |       25 |
| 5   |       2  |       1  |
| 6   |       6  |       98 |
| 7   |       3  |        1 |
+-----+----------+----------+

私が遭遇している問題は、1、2、および3のvideo_idを視聴した人のuser_idを返すクエリを作成することです。したがって、上記の例では、user_id1のみを返す必要があります。

私は何かをすることを考えました

SELECT user_id 
    FROM user_assessment 
    WHERE video_id = '1' AND video_id = '2' AND video_id = '3'

しかし、それは明らかに間違っています。

どんな助けでもいただければ幸いです。

4

2 に答える 2

3

ここで重要なのは、HAVING句(3)でチェックされる値が、INグループに含まれる要素の数と等しいことです。これにより、3つのビデオすべてが含まれることが保証されます。

SELECT user_id
    FROM user_assessment
    WHERE video_id IN (1, 2, 3)
    GROUP BY user_id
    HAVING COUNT(DISTINCT video_id) = 3
于 2012-10-11T18:33:29.857 に答える
2
SELECT user_id 
FROM user_assessment
WHERE video_id IN (1, 2, 3)
GROUP BY user_id
HAVING COUNT(video_id) = 3

これは、ユーザーごとに重複するvideo_idがないことを前提としています

于 2012-10-11T18:33:08.890 に答える