2015-02-23 40 views
2

我只想返回具有不同video_id的最新行。 我一直有麻烦得到这个工作,无论我尝试它的方式......我以前做过这件事,并没有那么困难,但由于某种原因,我的特定查询将无法正常工作。按分组排列,并从每个组中获取最新的行

我的表/结果:

enter image description here

我一直想这样的:

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 

回答

1

不能使用select *当你GROUP BY

尝试......

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 
0

试试这个:

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 
相关问题