我看过这边文章的去重排序
https://blog.csdn.net/jiongxian1/article/details/78449232
=========================2020-4-30更新 mysql8.0解决 group by 字段问题-========
给id添加max,min或者直接用 any_value都行
=========================
在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是,评分的开始设定时间,
完整的数据表是这样的.
需求:求这里所有负责人最新的评价设置记录
神奇的办法1:
SQL语句:
select * from (select * from login_estimatehistory order by setting_time DESC limit 0,30) alias group by who;
结果:
对了,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;