我在查询我的用户评估表时遇到问题。
目前该表看起来像这样。
+-----+----------+----------+
| 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 |
+-----+----------+----------+
我遇到的问题是形成一个查询,该查询返回已观看video_id为1,2和3的人的user_id。因此,在上面的示例中,只应返回user_id 1。
我想做像
这样的事情SELECT user_id
FROM user_assessment
WHERE video_id = '1' AND video_id = '2' AND video_id = '3'
但这显然是不正确的。
任何帮助都将不胜感激。
答案 0 :(得分:3)
这里的关键是HAVING子句(3)中检查的值等于IN分组中包含的元素数。这可以保证包含所有三个视频。
SELECT user_id
FROM user_assessment
WHERE video_id IN (1, 2, 3)
GROUP BY user_id
HAVING COUNT(DISTINCT video_id) = 3
答案 1 :(得分: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