3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
group by 的意思為分組匯總。
使用了group by 后,要求Select出的結(jié)果字段都是可匯總的,否則就會(huì)出錯(cuò)。
比如,有:{學(xué)號(hào),姓名,性別,年齡,成績(jī)}字段
這樣寫:
SELECT 學(xué)號(hào),姓名,性別,年齡,sum(成績(jī))
FROM 學(xué)生表
GROUP BY 學(xué)號(hào)
就是錯(cuò)的,因?yàn)?“姓名、性別、年齡”未被匯總,且不一定是單一。
這樣寫:
SELECT MAX(學(xué)號(hào)),MAX(姓名),MAX(性別),MAX(年齡),sum(成績(jī))
FROM 學(xué)生表
GROUP BY 學(xué)號(hào)
是對(duì)的,匯總出每一同學(xué)號(hào)學(xué)生的總成績(jī)。注意的是,只要學(xué)號(hào)相同,別的如果有不同,取它們值最大的一條作為顯示輸出。
這樣寫:
SELECT 學(xué)號(hào),姓名,性別,年齡,sum(成績(jī))
FROM 學(xué)生表
GROUP BY 學(xué)號(hào),姓名,性別,年齡
這樣寫也是對(duì)的,但注意的是,學(xué)號(hào),姓名,性別,年齡中,只要有一個(gè)不同,就會(huì)當(dāng)成另一條記錄來匯總。

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
select * from 表名 group by 列名
這個(gè)語句是錯(cuò)誤的,group by 語句不用用和*搭配的,除非你查詢的所有列都包含在GROUP BY語句匯總,解決的辦法就是,把*換成具體的列名,并且列表必須包含統(tǒng)計(jì)函數(shù)(max,min,count等)。
例如 學(xué)生表(學(xué)號(hào),姓名,性別,年齡)
SELECT MAX(學(xué)號(hào)),MAX(姓名),性別,MAX(年齡)
FROM 學(xué)生表
GROUP BY 性別
添加回答
舉報(bào)