2015-02-23 72 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 
相關問題