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