Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'img_id'
安裝了mysql5.7,用group by 查詢時拋出如下異常:
Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cslgdata.img_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因:
MySQL 5.7.5和up實現了對功能依賴的檢測。如果啟用了only_full_group_by SQL模式(在默認情況下是這樣),那么MySQL就會拒絕選擇列表、條件或順序列表引用的查詢,這些查詢將引用組中未命名的非聚合列,而不是在功能上依賴于它們。
解決方法:
1.登錄MySQL
mysql -u root -p
2. 輸入SHOW SESSION VARIABLES;
SHOW GLOBAL VARIABLES;
select @@sql_mode;
這時候你會看到session和global 的sql_mode的值都是一樣的:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
執行以下兩個命令:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
這兩個命令,去掉 sql_mode 的 ONLY_FULL_GROUP_BY

浙公網安備 33010602011771號