我們先來看下問題吧
select job,ename,count(job)
from emp
group by job;
錯誤:ORA-00979: 不是 GROUP BY 表達式
00979. 00000 - “not a GROUP BY expression”
答案
group by語句中select指定的字段必須是“分組依據字段”。
group by是分組查詢,也就是說你前面除了聚合函數外我在group by後面必須要指定,否則就報錯。你想想,我按job進行分組,但是ename有很多不同的值,那這樣不就是一對多了嗎
上圖來看:
select job ,ename from emp group by job;
查詢的結果不就是一對多嗎:
右邊如何變成一條呢,也就是一對一,那這裏就用到了聚合函數
比如可以這樣寫:
select job,count(ename) 數量 from emp group by job;
這樣的結果就是
在帶有group by 子句的查詢語句中,在select 列表中指定的列要麼是group by 子句中指定的列,要麼包含聚組函數。
而在mysql中則沒有強制性要要求,沒有強調select指定的字段必須屬於group by後的條件。
希望對你有幫助!