Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'houmi.driver_assess_info. 日期' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
时间: 2023-08-14 11:07:12 浏览: 135
这个错误是由于你的 SQL 查询中使用了 GROUP BY 子句,而 SELECT 列表中的表达式不在 GROUP BY 子句中,并且包含了非聚合列。根据 SQL 模式设置为 only_full_group_by,MySQL 要求 SELECT 列表中的每个非聚合列都必须在 GROUP BY 子句中出现,并且必须是 GROUP BY 列的函数依赖项。
要解决这个问题,你可以按照以下方法之一进行操作:
1. 将 SELECT 列表中的每个非聚合列都添加到 GROUP BY 子句中。
2. 如果你确实需要使用非聚合列,可以考虑使用聚合函数(如 MAX、MIN、SUM 等)对这些列进行聚合。
3. 如果你确定这些非聚合列的值是相同的(例如,它们来自同一个表),你可以使用任意一个聚合函数(例如 MAX 或 MIN)对它们进行聚合。
请根据你的实际需求选择适合的解决方法。
相关问题
1055 - Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column '36.36_analyse.vehicle_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这个问题是因为 MySQL 数据库的 sql_mode 模式默认开启了 only_full_group_by。这个模式要求 GROUP BY 语句中的每个列都必须出现在 SELECT 语句中,或者是在聚合函数中进行计算。而这个查询中 SELECT 语句中的字段不在 GROUP BY 语句中,而且也没有使用聚合函数,所以会报错。
解决方法有两种:
1. 可以将 sql_mode 设置为非 only_full_group_by 模式。具体方法是在 MySQL 配置文件中,找到 [mysqld] 部分,添加如下语句:
```
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
2. 修改查询语句,将 SELECT 语句中未出现在 GROUP BY 语句中的列使用聚合函数计算,或者将这些列也加入到 GROUP BY 语句中。
例如:
```
SELECT vehicle_id, COUNT(*) AS cnt
FROM your_table
GROUP BY vehicle_id;
```
Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'edds.p3.harness_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这是一个 SQL 错误,通常是由于 MySQL 的版本不同或者相关的 sql_mode 设置不同导致的。该错误的含义是在 GROUP BY 语句中出现了不在 GROUP BY 子句中的非聚合列,例如这里的 p3.harness_name 字段。解决这个问题的方法是将所有非聚合列都添加到 GROUP BY 子句中,或者在 MySQL 的配置文件中将 sql_mode 设置为非 only_full_group_by 模式。
阅读全文