mysql group by 字段 与 select 字段

12 篇文章 0 订阅

表数据如下:

执行SQL语句1:

SELECT * FROM `z_course` GROUP BY NAME,SEX 

结果:

 

执行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 的字段 使用了 聚合函数,那肯定是没问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值