php中文网

MySQL 子查询排序结果不保留?如何获取每个用户最新产品记录?

php中文网

子查询排序不保留?教你一招解决!

问题详情:

在 mysql 5.7.13 中,一个用户有一个产品,只显示最新的记录,但子查询排序后,排序结果不保留。尝试了分组后再排序,但仍然无法满足需求。寻求更靠谱、更简单的写法。

解决方案:

由于 mysql 5.7 版本不支持窗口函数,因此无法使用窗口函数来实现。不过,这里提供一种思路:

1. 计算每个分组的最大创建时间

select max(create_time) as create_time, user_id, product_id
from demo
group by user_id, product_id

2. 关联原表找到对应记录

将上一步得到的最大创建时间与原表关联,找到每个分组中最新的记录。

select t2.id, t1.* from (
    select max(create_time) as create_time, user_id, product_id
    from demo
    group by user_id, product_id
) t1
left join demo t2
on t1.user_id = t2.user_id
and t1.product_id = t2.product_id
and t1.create_time = t2.create_time

以上就是MySQL 子查询排序结果不保留?如何获取每个用户最新产品记录?的详细内容,更多请关注php中文网其它相关文章!