【问题标题】:Fetch recently watched videos?获取最近观看的视频?
【发布时间】:2009-11-20 18:04:34
【问题描述】:

我正在使用 MySQL。

我有以下表结构:表名:视频

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

请告诉我应该进行什么类型的查询来获取这些数据?

谢谢

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    用途:

      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
    

    【讨论】:

      【解决方案2】:
      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 相同。

      【讨论】:

      • 错过了“被不同用户观看”的约束
      • 重点是在您希望唯一的字段上使用 GROUP BY。
      • 也许可以,但你可以使用“group by v.videoID, w.userID”来解决这个问题^^
      猜你喜欢
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      相关资源
      最近更新 更多