最後更新於 2021 年 6 月 11 日
當我們今天使用 GROUP BY指令時可能遇到這個問題:
SELECT * FROM exdb.table GROUP BY id ;
Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'exdb.table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
意思是說:對於 GROUP BY 聚合操作,如果在 SELECT 中的列,沒有在 GROUP BY 中出現,那麼這個 SQL 是不合法的。
也就是說,當我們今天想要依照 學號 分組,但同時我們也需要知道該學號對應的學生姓名,就會引發這個錯誤。這個錯誤和 only_full_group_by
有關,是MySQL 5.7 GROUP BY的新特性,默認是為開啟,因此我們需要將它刪除掉。
還有另一種情況:SELECT 的欄位並沒有 GROUP BY 聚合引發的錯誤也可以用同樣的方式解決。
Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'exdb.table.id'; this is incompatible with sql_mode=only_full_group_by
解決辦法
輸入下方指令:
SELECT @@SESSION.sql_mode;
我們可以查看到當前 sql_mode
'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
我們將之複製起來,刪除掉 ONLY_FULL_GROUP_BY, 的部分,輸入下方指令重新設置 sql_mode 即可:
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Latest posts by pluto (see all)
- 解決 preact-router 資源請求路徑錯誤的問題 - 2022 年 6 月 24 日
- [楓之谷私服] 潮流轉蛋機 NPC 腳本優化 - 2022 年 6 月 19 日
- [楓之谷私服] 簡單的飛天椅子(坐騎)改法 v120 - 2022 年 6 月 19 日