最近在重新复习mysql数据库
下面是一张学生表 student
需要将重复的姓名name字段进行去重,然后学生的生日birthday 字段筛选出最早的时间进行降序。
我用到的是 GROUP BY函数进行分组去重,先将查出 birthday 字段进行分组并且降序。
SELECT * from student GROUP BY birthday ORDER BY birthday DESC
结果如下:排序需求已经完成了,现在还需要名字去重,那就把上面的 sql语句复制一下继续套用。
将复制的sql语句嵌套起来用,再将学生name 字段进行 GROUP BY name函数进行分组去重。
随便起了个表的别名 a 就是student学生表
SELECT * from (SELECT * from student GROUP BY birthday ORDER BY birthday DESC) a GROUP BY a.name
结果如下,生日日期较短的张三已经去重消失了,剩下的张三的生日时间是比较新的。
如果有小伙伴查询sql的 GROUP BY函数的时候就会出现以下报错
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx.xxxxxx.xxx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
可以去下面这个链接解决。
https://blog.csdn.net/NatChan/article/details/108085652