mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)

我看过这边文章的去重排序

https://blog.csdn.net/jiongxian1/article/details/78449232

mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)_第1张图片

 

在mysql5.5是可以实现的,但是感觉在mysql5.7就没办法实现了.!

 

说带说一下,就是,在mysql5.7如果只是想简单使用group by功能,

还得在  /etc/my.cnf 修改配置(仅限linux系统)

在文件最后面添加

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

实例:

我这里有一份评分历史记录,字段who,就是负责人(发起评分的人),字段setting_time是,评分的开始设定时间,

完整的数据表是这样的.

需求:求这里所有负责人最新的评价设置记录

mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)_第2张图片

mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)_第3张图片

神奇的办法1:

SQL语句:

select * from (select * from login_estimatehistory order by setting_time DESC limit 0,30) alias group by who;

结果:

mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)_第4张图片

对了,kuman负责人最新的评分数据就是ID为20的这条,18年6月4日的

其他的负责人也一次显示出来了.

但是我无法解析limit的作用.只知道能用.

解决办法2:(超土方法,但是好理解)---->(先排序,再去重)

 

然后我的解决办法,只能使用临时表来解决求最新数据的排序了

看图

使用临时表去解决

SQL语句:

(排列)

语句1: create temporary table cctv select * from login_estimatehistory order by who,setting_time DESC;

(先把负责人和setting_time作为依据排列)

(去重)

语句2:select * from cctv group by who;

(然后就可以对这些数据分组去重

(删除临时表)

语句3:drop table cctv;

mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人)_第5张图片

 

 

你可能感兴趣的:(mysql5.7或者以上版本的,去重之后排序(降序)的解决方法(参考,不一样适用每一个人))