【问题标题】:Group by and get the latest row from each group分组并从每个组中获取最新行
【发布时间】:2015-02-23 02:47:53
【问题描述】:

我只想返回具有不同video_id 的最新行。 无论我尝试哪种方式,我都无法让它工作......我以前做过,这并不难,但由于某种原因,我的特定查询将无法工作。

我的表格/结果:

我一直在尝试这个:

SELECT * FROM user_video_history 
WHERE `user_id` = $db_safe_user_id 
GROUP BY video_id 
ORDER BY `date` DESC LIMIT 3

我也试过这个:

SELECT *
FROM (SELECT *
        FROM user_video_history
        WHERE `user_id` = $db_safe_user_id
        ORDER BY `date` DESC) 
GROUP BY `video_id`
ORDER BY `date` DESC

【问题讨论】:

    标签: mysql sql group-by sql-order-by


    【解决方案1】:

    你不能在 GROUP BY 时使用 select *

    试试这个……

    SELECT 
        A . *
    FROM
        user_video_history A,
        (SELECT 
            video_id, max(date) maxdate
        FROM
            user_video_history
        WHERE
            `user_id` = $db_safe_user_id
        GROUP BY video_id) B
    where
        A.video_id = B.video_id
            and A.date = B.maxdate
    order by A.date DESC
    limit 3
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT 
          t1 . *
      FROM
          user_video_history t1
              JOIN
          (SELECT 
              id, MAX(`date`) `date`
          FROM
              user_video_history
          GROUP BY user_id) t2 ON t1.user_id = t2.user_id
              AND t1.`date` = t2.`date`
          LIMIT 3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 2017-02-05
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多