亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL語句select * from 表名 group by 列名--不是 GROUP BY 表達式

SQL語句select * from 表名 group by 列名--不是 GROUP BY 表達式

翻翻過去那場雪 2019-04-03 02:01:06
RTselect * from 表名 group by 列名----- 報錯 ORA-00979: 不是 GROUP BY 表達式數據庫:oracle10g* 換成 列名也不行
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

group by 的意思為分組匯總。
使用了group by 后,要求Select出的結果字段都是可匯總的,否則就會出錯。

比如,有:{學號,姓名,性別,年齡,成績}字段

這樣寫:
SELECT 學號,姓名,性別,年齡,sum(成績)
FROM 學生表
GROUP BY 學號
就是錯的,因為 “姓名、性別、年齡”未被匯總,且不一定是單一。

這樣寫:
SELECT MAX(學號),MAX(姓名),MAX(性別),MAX(年齡),sum(成績)
FROM 學生表
GROUP BY 學號
是對的,匯總出每一同學號學生的總成績。注意的是,只要學號相同,別的如果有不同,取它們值最大的一條作為顯示輸出。

這樣寫:
SELECT 學號,姓名,性別,年齡,sum(成績)
FROM 學生表
GROUP BY 學號,姓名,性別,年齡
這樣寫也是對的,但注意的是,學號,姓名,性別,年齡中,只要有一個不同,就會當成另一條記錄來匯總。



查看完整回答
反對 回復 2019-04-04
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

select * from 表名 group by 列名

這個語句是錯誤的,group by 語句不用用和*搭配的,除非你查詢的所有列都包含在GROUP BY語句匯總,解決的辦法就是,把*換成具體的列名,并且列表必須包含統計函數(max,min,count等)。

例如 學生表(學號,姓名,性別,年齡)

SELECT MAX(學號),MAX(姓名),性別,MAX(年齡)
FROM 學生表
GROUP BY 性別

查看完整回答
反對 回復 2019-04-04
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

* 中,含有不能通過分組進行組合的字段。
舉個例子說:
emp表:
empno ename dept_id
1 tony 1
2 jack 1

使用select * from emp e group by e.dept_id;
dept_id雖可進行分組組合,但是empno,ename不能進行組合。


 


查看完整回答
反對 回復 2019-04-04
  • 3 回答
  • 0 關注
  • 2815 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號