1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'longtanglongyin.longtanglongyin.CHECKTIME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 什么错误?
时间: 2023-07-18 17:13:21 浏览: 98
MySQL异常:[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nona…
5星 · 资源好评率100%
这个错误是因为 MySQL 5.7.5 版本之后默认启用了 ONLY_FULL_GROUP_BY 模式,该模式要求 GROUP BY 子句中的列必须是聚合函数或者 GROUP BY 列本身。如果 SELECT 列表中包含了没有被 GROUP BY 的列,并且这些列不是聚合函数,就会提示这个错误。
要解决这个错误,有两种方法:
1. 在 SELECT 列表中增加被 GROUP BY 的列,或者使用聚合函数对需要显示的列进行聚合。例如:
```
SELECT VEHICLE_NO, MIN(CHECKTIME) AS FIRST_CHECK, MAX(CHECKTIME) AS LAST_CHECK, SUM(TOTAL) AS TOTAL_SUM
FROM longtanglongyin
WHERE AXLES=6 AND TOTAL>45000 AND TOTAL<55000
GROUP BY VEHICLE_NO, AXLES;
```
2. 修改 MySQL 的 sql_mode 参数,将 ONLY_FULL_GROUP_BY 模式移除。例如:
```
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
在修改 MySQL 的 sql_mode 参数时需要注意,如果你是使用的是 MySQL 8.0 版本及以上,需要将上述命令中的 @@sql_mode 改成 @@global.sql_mode 或者 @@session.sql_mode,具体使用哪个取决于你是要修改全局参数还是会话参数。
阅读全文