获取最近收看的视频?

时间:2009-11-20 18:04:35

标签: sql mysql

我正在使用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

请告诉我应该用什么类型的查询来获取此数据?

感谢

2 个答案:

答案 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相同的位置。