1. 程式人生 > >Oracle出現不是group by 表示式的原因

Oracle出現不是group by 表示式的原因

Oracle不是group by 表示式的原因

今天在寫sql語句中碰到一個不是group by 表示式的問題,

總結了一下產生這個問題的原因

第一,沒有把所有的非聚合函式字段加入到group by 中

例如我們要查詢一個班級學生的總成績

select
b.姓名,
sum(c.成績),
b.性別,
b.年齡
from
班級表 b,
成績表 c
where
b.姓名=c.姓名
group by
b.姓名,
b.性別,
b.年齡

在這個sql中的group by中 姓名,性別,年齡都必須在 group by分組裡
否則會出現 不是group by 表示式的錯誤。

第二,在group by 中不能用別名

比如

select
b.姓名 as name,
sum(c.成績),
b.性別,
b.年齡
from
班級表 b,
成績表 c
where
b.姓名=c.姓名
group by
name,
b.性別,
b.年齡

把姓名換成name 也是會出現 不是group by 表示式的錯誤
把name 改成b.姓名就可以了。