在网上找了一大堆答案,都说直接禁用掉only_full_group_by没有从根本上理解为什么mysql 要默认开启only_full_group_by,所以这里先来分析一下这个问题,假如一张表有以下数据:
id | name
----------------
1 ali1
2 john
3 ali2
当我们使用GROUP BY 对name字段进行分组时:
SELECT * FROM users GROUP BY name;
可能会产生两种结果:
id name
------------
1 ali
2 john
或者
id name
-----------
2 john
3 ali
可以看出,mysql 不知道应该获取那个id 作为当前分组的id 了,可以使用以下方式就不会报错了:
SELECT MAX(id), name FROM users GROUP BY name;
另外说明以下,如果时字符串也可以使用MAX来获取当前分组的最后一条数据的内容