Oracle出現不是group by 表示式的原因
阿新 • • 發佈:2019-02-02
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.姓名就可以了。