zhwh_max的gravatar头像
zhwh_max 2019-08-26 19:36:24

sql语句 group by 后面的字段 要必须 与 select 后面的字段(除聚合函数) 保持一致吗??

sql语句
group by 后面的字段  要必须  与  select 后面的字段(除聚合函数) 保持一致吗?? 

所有回答列表(9)
wjxiongw的gravatar头像
wjxiongw  LV6 2019年8月27日

必须的,除了除聚合函数

Tonfay的gravatar头像
Tonfay  LV26 2019年8月28日

5.7默认是这样的

sql_mode 有一个 ONLY_FULL_GROUP_BY 配置项

奋斗中的程序猿的gravatar头像
奋斗中的程序猿 2019年8月28日

语法:group by 分组字段

迷瞪的一批的gravatar头像
迷瞪的一批  LV6 2019年8月30日

比如说我们有一个学生表格(student),包含学号(id),课程(course),分数(score)等等多个列

SELECT id, COUNT(course) as numcourse, score

FROM student

GROUP BY id

此时查询便会出错,错误提示如下:

Column ‘student.score' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

出现以上错误的原因是因为一个学生id对应多个分数,如果我们简单的在SELECT语句中写上score,则无法判断应该输出哪一个分数。如果想用score作为select语句的参数可以将它用作一个聚合函数的输入值,如下例,我们可以得到每个学生所选的课程门数以及每个学生的平均分数:

SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore

FROM student

GROUP BY id

qw154732533的gravatar头像
qw154732533  LV5 2019年9月2日

必须的,除了除聚合函数

weiwei1991的gravatar头像
weiwei1991  LV15 2019年9月4日

是的。除了除聚合函数

hongxinmiao的gravatar头像
hongxinmiao  LV7 2019年9月5日

是的必须一致,因为以group by 后面的字段分组中对应得到的是一条或多条数据聚合成的函数结果

liuqingfang000的gravatar头像
liuqingfang000  LV3 2019年9月23日

是的,因为以group by 后面得到的可能是一条或多条数据结果

treeke的gravatar头像
treeke  LV11 2019年10月23日

设置 sql_mode = null  就可以

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友