1. 程式人生 > 其它 >Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

在mysql 5.7使用group by時會出現錯誤,首先表資訊如下:

 

 

select name from student group by classid;
會出現下列錯誤

 

 

 

 

 


mysql5.7預設group by 只能配合聚合函式使用如max,count(*),等
這樣是沒問題的

 

 

因為MySQL 5.7.5和up實現了對功能依賴的檢測。如果啟用了only_full_group_by SQL模式(在預設情況下是這樣),那麼MySQL就會拒絕選擇列表、條件或順序列表引用的查詢,這些查詢將引用組中未命名的非聚合列,而不是在功能上依賴於它們。(在5.7.5之前,MySQL沒有檢測到功能依賴項,only_full_group_by在預設情況下是不啟用的。關於前5.7.5行為的描述,請參閱MySQL 5.6參考手冊。)
我們可以檢視mysql5.7的檢查模式:
SELECT @@sql_mode;

 

 

通過修改my.cnf或者my.ini配置檔案去掉ONLY_FULL_GROUP_BY一項(如果沒有這個配置項則新建)
sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
重啟mysqld服務

 

 

這是已經沒有了ONLY_FULL_GROUP_BY,這是再執行

 

 

已經不會報錯了,預設顯示第一條
————————————————
版權宣告:本文為CSDN博主「renyiforever」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/renyiforever/article/details/80571884