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

為了賬號安全,請及時綁定郵箱和手機立即綁定

GROUP BY 需要滿足的條件

SELECT子句中的列名必須為分組列或列函數

列函數對于GROUP BY子句定義的每個組各返回一個結果


不是要滿足這些要求嗎,不然會報錯,為什么視頻里就沒有報錯,求解?

正在回答

2 回答

視頻中出現的

分組列是:goods_name

列函數是:count()

“列函數對于GROUP BY子句定義的每個組各返回一個結果”

??? ——視頻中只定義了一個分組“goods_name”。

“SELECT子句中的列名必須為分組列或列函數”

??? ——“SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name......”。

??????? 我想條件中所述的列名應該是在"GROUP BY"后面的“goods_name”而并非"SELECT"后面的“goods_id,goods_name”,"SELECT"后面是要查找和顯示的范圍。

個人理解,希望能幫到樓主。

0 回復 有任何疑惑可以回復我~
#1

_Kamui_ 提問者

SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name) >= 2 這個句子,用goods_name作為分組條件,那么每一個goods_name就會對應返回兩個goods_id,這樣每一條記錄上的goods_id列和goods_name列的數據量就不匹配了,goods_id列要顯示兩個數據,而goods_name要顯示一個數據。
2017-02-08 回復 有任何疑惑可以回復我~
#2

_Kamui_ 提問者

然后我實踐發現,大多數數據庫能夠正確執行,自動取了goods_id列的第一個值展示,然而也有報錯的情況,我以前就是一直認為會報錯的,網上大多數的回答也是這個理論。 所以可能是數據庫的版本問題,或者是某個配置設置可以將數據庫的嚴格限制放寬這樣?
2017-02-08 回復 有任何疑惑可以回復我~
#3

_Kamui_ 提問者

MySQL extends the use of GROUP BY to allow selecting fields that are not mentioned in the GROUP BY clause; MySQL對GROUP BY的使用進行了擴展,允許選擇在GROUP BY子句中沒有被提到的字段。 就這樣理解吧,網上說的應該不是mysql
2017-02-08 回復 有任何疑惑可以回復我~
#4

_Kamui_ 提問者

聚聚
2017-02-08 回復 有任何疑惑可以回復我~
查看1條回復

存在版本group by 1055 錯誤的
select min(a.goods_id)goods_id,goods_name from tdb_goods a group by goods_name having count(goods_name)>1;

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
與MySQL的零距離接觸
  • 參與學習       396743    人
  • 解答問題       3497    個

本課程涵蓋全部MySQL數據庫的基礎,學習MySQL數據庫的基礎知識

進入課程

GROUP BY 需要滿足的條件

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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