我正在使用MySQL。
我有以下表格结构:tablename:Videos
videoId title description
1 Video title 1 Some description text1
2 Video title 2 Some description text2
3 Video title 3 Some description text3
4 Video title 4 Some description text4
5 Video title 5 Some description text5
然后我有一张桌子:WatchedVideos
id videoId Userid date
1 2 234 2009-11-12 04:46:44
2 2 212 2009-11-13 04:46:44
3 3 234 2009-11-13 05:46:44
4 4 235 2009-11-13 06:46:44
5 4 235 2009-11-13 07:46:44
6 1 234 2009-11-13 08:46:44
7 1 234 2009-11-13 09:46:44
现在我想要获取“正在观看的视频”是指最近2个(我将根据我的情况修改)视频列表,这些视频最近由不同用户观看,但当我在上面两个之间应用加入时表格然后它给出了我不想要的重复游戏,如果一个用户观看了两次相同的视频,那么它给了那个视频两次,我想要独特的视频列表详情如下:
videoId title description
1 Video title 1 Some description text1
4 Video title 4 Some description text4
请告诉我应该用什么类型的查询来获取此数据?
感谢
答案 0 :(得分:2)
使用:
SELECT v.videoid,
v.title,
v.description
FROM VIDEOS v
JOIN (SELECT wv.videoid,
MAX(wv.date) 'max_date'
COUNT(*) 'count'
FROM WATCHEDVIDEOS wv
GROUP BY wv.videoid
ORDER BY count DESC
LIMIT 2) x ON x.videoid = t.videoid
ORDER BY x.max_date DESC
答案 1 :(得分:1)
select * from Videos v, WatchedVideos w
where v.videoID=w.videoID
group by videoID
order by date desc
limit 2;
使用“group by col1,col2,.. colN”子句将结果放在字段col1..colN相同的位置。