今天有一个场景,在条件查询后需要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
这样可以查出: