sql中,在分组聚集操作中,为什么在查询列中,除了聚集函数运算外,其它表达式必须包含在group by子句中?

拜托高手指点一二
2025-04-13 19:11:43
推荐回答(2个)
回答(1):

表Student有列:ID,Name,Age
假设有以下数据
1,张三,18
2,李四,19
3,王五,18
4,张三,17
----------------------------------------------
这张表有两个叫张三的,但是他们不是同一个人
如果查询同名的人有多少个,可以用
select name,count(*) from tab_1 group by name
查询结果就会是
张三,2
李四,1
王五,1
如果你想加入别的字段,比如年龄。假设语句是select name,age,count(*)
那肯定会出错,系统就不知道到底显示哪一条age了。
所以需要用聚合函数指定是max(age)还是sum(age)或是别的什么age
而在group by 后面的字段name,结果就是根据它分组的,是独一无二的,所以不需要特别指定。

回答(2):

这个是必须的。规定,必须参照,否则数据库会报错。