(1055, "Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sheji.sale.portion' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")
时间: 2023-07-18 13:21:57 浏览: 65
这个错误是因为 MySQL 的版本在 5.7.5 及以上,启用了 SQL_MODE 中的 `ONLY_FULL_GROUP_BY` 模式,要求在 GROUP BY 子句中的列必须是聚合函数或者 GROUP BY 列。
解决这个错误的方法有两种:
1. 修改 SQL_MODE,去掉 `ONLY_FULL_GROUP_BY` 模式,可以在 MySQL 的配置文件中或者会话中执行如下命令:
```
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
2. 在查询中添加聚合函数,例如:
```
SELECT column1, SUM(column2)
FROM your_table
GROUP BY column1;
```
这个查询会将 `column1` 列进行分组,并对每个分组中的 `column2` 列求和。如果你不需要对 `column2` 求和,可以将 `SUM(column2)` 改为其他的聚合函数,例如 `MAX(column2)` 或者 `MIN(column2)` 等。
相关问题
[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colum...
这个错误通常发生在MySQL中,因为MySQL对于GROUP BY查询有一些特殊的限制。
当你在SELECT语句中使用了GROUP BY子句时,MySQL要求在SELECT列表中包含GROUP BY子句中的所有列或者使用聚合函数(如SUM、COUNT、AVG等)对其他列进行聚合。这是为了保证查询结果的正确性。
你可以尝试在SELECT语句中将所有列都包含在GROUP BY子句中,或者使用聚合函数对其他列进行聚合。例如:
```
SELECT column1, column2, SUM(column3)
FROM table
GROUP BY column1, column2
```
这样就可以避免这个错误了。
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 什么错误?
这个错误是因为 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,具体使用哪个取决于你是要修改全局参数还是会话参数。
阅读全文