SQL中,在分组聚集操作中,为什么在查询列中,除了聚集函数运算外,其它表达式必须包含在group by子句中?
悬赏分:10 | 解决时间:2011-5-16 22:35 | 提问者:ristal11
希望高手指点
最佳答案
select中含有的字段必须在group by当中有!~
简单的你可以把这个理解为规定!~
复杂点 你可以看下面的例子!~
table字段和数据如下
a b c
1 1 1
1 2 2
select a,b,sun(c) as sum_c from table group by a
因为按照a分组合集c 所以SQL的查询结果
会有一条a,值等于1 。
会有一条c值等于3 。
没有按照b分组,两个不一样的值没有办法处理,这样就违背了sum函数的功能了!~
追问
首先谢了,不过我想再请问一下,我们既按a分组,又按b分组,那么查询结果是按a来还是按b来啊?
回答
2个都分组!~
为什么 group by后面 必须跟selecte 后面的除了聚集函数外的所有字段
悬赏分:10 - 解决时间:2008-8-18 14:13
如:SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name 可以
而
SELECT store_name, address, SUM(Sales) FROM Store_Information GROUP BY store_name 不行。
必需要
SELECT store_name, address ,SUM(Sales) FROM Store_Information GROUP BY store_name ,address 才行。
提问者: yearningyou - 童生 一级
最佳答案
这是SQL语法的规定,用了group by,则select之后的字段除了聚集函数外都必须出现在group by中,你可以少于group by中的字段,但不能包含group by中没有的字段