mysql 8.0 使用group by函数遇到的问题

使用flask开发一个练习项目,里面有一个业务需求用到了过滤查询,场景类似以下:

id name
1 a
2 b
3 c
4 a

在查询的时候根据name字段过滤,查询的结果要返回id和name两个字段(真实表结构要复杂点,意思差不多)。之前用pg数据库,类似场景都是用group by name 做过滤。这天把之前写的代码down到笔记本上却出现了一个问题his is incompatible with sql_mode=only_full_group_by。查了下好像是mysql8.0的一个坑。使用SELECT @@GLOBAL.sql_mode;查询sql_mode返回的值如下ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,第一项包括only_full_group_by,通过执行set global 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_mode的配置即可。
修改完以后执行sqlselect * from table_name group by name,返回结果集如下:

id name
1 a
2 b
3 c

你可能感兴趣的:(mysql 8.0 使用group by函数遇到的问题)