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

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

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

问题详情:

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

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享