MySQL-排序加去重sql语句

 

最近在重新复习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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值