【问题标题】: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