这个报错的原因是,在SQL语句中,你查询的字段应该是你分组的依据,即select
的column
应该全部跟在group by
之后。这个也和MySQL的版本有关系,MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性。
-- 如何查看MySQL的版本?
show variables like 'version';
-- 查看当前的sql_mode
show variables like 'sql_mode';
set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
查询的字段需要全部作为分组的依据,但是实际情况下我们很多情况都是只根据一个字段来做分组,而且还需要对分组的数据进行某种规则的排序,来筛选出一条数据,那么可以通过如下SQL来实现:
select * from table_A a inner join (select col_1,max(col_2) col_2 from table_A group by col_1) tem on a.col_2 = tem.col_2