mysql group by 字段 与 select 字段

表数据如下:

mysql group by 字段 与 select 字段_第1张图片

执行SQL语句1:

SELECT * FROM `z_course` GROUP BY NAME,SEX 

结果:

mysql group by 字段 与 select 字段_第2张图片 

执行SQL语句2:

SELECT * FROM `z_course` GROUP BY NAME 

 

sql 1 根据 name,sex 两个字段分组,查询 所有字段,返回结果

sql 2 根据 name 字段分组,查询所有字段,返回结果

sql2 和 sql1 的区别是 分组少了 sex字段,那么 返回的结果 就是只有 name分组结果 并且 返回分组后的第一条记录 

select 字段 和 group by 字段 不一致,没有报错?这是为什么?

数据库版本用的 5.6.24,难道和版本有关? 换了个 5.7的也是不行。

show variables like 'sql_mode'

 

set session sql_mode= 'ONLY_FULL_GROUP_BY,NO_ENGINE_SUBSTITUTION'; 

 

SELECT * FROM `z_course` GROUP BY NAME 

 

一顿操作,复现了 select 字段 和 group by 字段 不一致 导致sql报错的问题。所以,问题是 sql_mode 的设置。

对于sql_mode,就不赘述了,他有一个选项,

ONLY_FULL_GROUP_BY,限制了 group by 字段 和 select 字段一致的要求。

如果 select 的字段 使用了 聚合函数,那肯定是没问题的。

你可能感兴趣的:(笔记,DB,mysql,数据库)