select中的字段(非聚合函数)是否必须出现在groupby中?

626 阅读1分钟

问题描述

之前对group by的认知是,select中的的字段必须出现在group by中,否则没有意义。 至于执行这样的sql会不会报错呢?没有明确的答案(反正也不会这么写)。

但是今天偶然发现,竟然不会报错!!

测试数据如下:

image.png

sql语句:

SELECT student.s_name, student.s_sex FROM student GROUP BY student.s_sex

执行结果:

image.png

发现能正常执行,而且group by后默认取每组第一条数据

问题分析

  • 经过查资料发现,是由于没有设置only_full_group_by属性,所以MySQL不会提示错误
  • 可以通过SELECT @@sql_mode查看当前设置