Mysql 数据记录去重后按字段排序

来源:互联网 发布:办公软件快捷方式 编辑:程序博客网 时间:2024/06/08 17:25

实现效果:去重—取最新的—排序 

例子 : 按用户ID获取历史记录中某个人的记录,要求非重复的且每条只获取最新的,同时按添加时间倒序排列的

实现 : 

SELECT * FROM ( SELECT * FROM historys WHERE types_id=1 ORDER BY `created` DESC ) AS B GROUP BY B.data_idorder by B.created DESC


之前在做一个视频的历史播放记录时遇到了去重后倒序排序的功能需求



然后直接写了

SELECT H.* FROM `historys` AS H WHERE H.`users_id` = '259' AND H.`types_id` = 1 GROUP BY H.`data_id` ORDER BY H.`id` ASC 

本来以为没问题,结果后来检查时发现是有分组了(实现了去重),但没有把最新的历史记录排在前面




如图,分组了,也倒序排序了,但是获取的记录并不是 data_id 的最新的那条

需要的真实顺序应该是24、23、29、30。。。

sql语句修改为

SELECT A.* FROM (SELECT H.*FROM `historys` AS H WHERE H.`users_id` = '259' AND H.`types_id` = 1ORDER BY H.`id` DESC ) AS AGROUP BY A.data_id ORDER BY A.id DESC
结果为

这才是正确的结果

原创粉丝点击