mysql5.7group by异常引发的思考

今天有一个场景,在条件查询后需要group by去重,但是放到环境下跑的时候,mysql5.7报错,报错如下:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause … this is incompatible with sql_mode=only_full_group_by [duplicate],但是是公司数据库环境不能随便动它,于是只能另想它法。

发现left join有异曲同工之妙。表结构如下:



我要查出姓名相同,但是年龄是最大的那些记录,按理说应该查出:如下 

张三 25

李四 22

王五 55

于是有如下思考,在姓名相同的情况下

找出u1表中年龄比u2表年龄小的两张表组合起来,发现年龄较小的记录都有id1,name1,age1,也就是能匹配右表的记录,年龄大的匹配不到,这样就很清楚了,再加上一个where 语句即可查出年龄大的记录,如下

SELECT * from user u1 LEFT JOIN user u2 ON(u1.name = u2.name and u1.age < u2.age) where u2.id is null

这样可以查出:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值