高版本Mysql使用group?by分組報錯的解決方案
Mysql5.7版本以上對group by 分組有了新需求,要求group by 后的字段要與select后查詢的字段一致,否則就會報錯,報錯信息如下:
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
通過報錯分析是由于group by 后的分組字段與查詢字段不一致導致。
解決方案:
方法一:補全group by 后字段(不推薦這種方法,有時要查詢的字段很多而且字段的內容不能保證不重復,如果全部補齊會造成查詢數據丟失)。
方法二:修改配置
1)使用navicat管理工具連接mysql數據庫
打開navicat管理工具,按F6打開命令界面,依次輸入以下語句
select @@global.sql_mode;
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';`
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
截圖如下:

再重新執(zhí)行就會發(fā)現(xiàn)不再報錯。
2)使用cmd命令行更改
按win+r打開運行界面,輸入cmd打開命令行界面

打開后切換目錄到mysql安裝包的bin目錄下,具體操作如下圖(根據自己路徑切換)

連接數據庫,輸入mysql -u root -p,按回車再輸入數據庫密碼
連接成功后再依次輸入以下語句
select @@global.sql_mode;
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
截圖如下:

至此配置結束
總結
到此這篇關于高版本Mysql使用group by分組報錯的解決方案的文章就介紹到這了,更多相關Mysql使用group by分組報錯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL中Like模糊查詢速度太慢該如何進行優(yōu)化
在業(yè)務場景中經常會用到like模糊查詢,但是大家都知道,like是用不到索引的,所以當數據量非常大時,速度會非常慢,這篇文章主要給大家介紹了關于MySQL中Like模糊查詢速度太慢該如何進行優(yōu)化的相關資料,需要的朋友可以參考下2021-12-12

