如果我必须查找多次查看同一视频的所有用途,那么我正在使用以下查询。
SELECT userid AS users,video_id
FROM watching_list GROUP BY userid , video_id HAVING COUNT(*) > 1;
^^它确实给你了吧?如果watching_list包含用户观看的userid和videoid以及日期时间戳。
我想要做的是将它连接到基于userid的用户表,以查找用户名等,而不仅仅是用户ID。
我尝试过简单的加入,当然它打破了我。
答案 0 :(得分:4)
SELECT Users.Name, Users.userid AS users,video_id
FROM watching_list
JOIN Users
ON Users.UserID = watching_list.UserID
GROUP BY Users.userid , video_id, Users.Name
HAVING COUNT(*) > 1;
为什么会这样?它应该是同一个用户,因此向group by
添加同一个人的其他信息不应导致更改
答案 1 :(得分:3)
这样做有点不合时宜的方式是这样的:
Select USERS.LAST_NAME,
USERS.FIRST_NAME,
double_watchers.VIDEO_ID
FROM USERS,
(SELECT userid AS users,
video_id
FROM watching_list
GROUP BY userid , video_id
HAVING COUNT(*) > 1) double_watchers
Where double_watchers.userid = users.id;
我正在使用您的原始查询创建内联表(不确定术语),然后将其加入USERS表。可能有一种更有效的方法,但我现在没有在我面前试验实验。