[42000][1140] In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'schema_0510.workbook.CITY_NAME'; this is incompatible with sql_mode=only_full_group_by
时间: 2023-06-15 13:05:17 浏览: 146
这个错误是因为 MySQL 的 sql_mode 设置了 only_full_group_by,导致在聚合查询中出现了非聚合列。具体来说,你的查询中 SELECT 字句中的某一列(CITY_NAME)不是聚合函数,但是在 GROUP BY 子句中并没有出现。因此,MySQL 认为这个查询存在二义性,无法确定如何处理这个非聚合列。
要解决这个问题,你可以有以下几个选择:
1. 在 SELECT 字句中添加 CITY_NAME 列的聚合函数,例如 COUNT(CITY_NAME) 或 MAX(CITY_NAME)。
2. 在 GROUP BY 子句中添加 CITY_NAME 列,例如 GROUP BY CITY_NAME。
3. 修改 MySQL 的 sql_mode 设置,将其改为非 only_full_group_by 模式。例如,可以将 sql_mode 设置为 "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"。
希望这可以帮助到你解决问题。
相关问题
1140 - In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'h.room_types.room_num'; this is incompatible with sql_mode=only_full_group_by
这个错误是因为你的SQL语句中使用了聚合函数(如SUM、AVG、COUNT等),但同时SELECT列表中也包含了非聚合列(如h.room_types.room_num),而且没有使用GROUP BY对结果进行分组。这违反了MySQL的严格模式(ONLY_FULL_GROUP_BY)要求SELECT列表中的列要么是聚合函数,要么是GROUP BY中的列。
要修复这个错误,你可以将非聚合列添加到GROUP BY中,或者使用聚合函数对其进行计算。
例如,如果你想按房间类型统计每种房型的数量,可以这样写SQL语句:
```
SELECT h.room_types.type_name, COUNT(h.room_types.room_num) as count
FROM hotel h
GROUP BY h.room_types.type_name
```
这样就可以避免这个错误了。
In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column
当你在一个没有使用 GROUP BY 子句的聚合查询中,选择列表中的表达式包含了非聚合列时,你会遇到这个错误。这是因为在没有 GROUP BY 子句的情况下,选择列表中的每个表达式必须是一个聚合函数或者是在 GROUP BY 子句中列出的列。
要解决这个问题,你可以将非聚合列添加到 GROUP BY 子句中,或者使用聚合函数对这些非聚合列进行计算。以下是两种解决方法的示例:
1. 将非聚合列添加到 GROUP BY 子句中:
```
SELECT column1, column2, COUNT(*)
FROM 表名
GROUP BY column1, column2;
```
2. 使用聚合函数对非聚合列进行计算:
```
SELECT MAX(column1), SUM(column2), COUNT(*)
FROM 表名;
```
请根据你的需求选择适合的解决方法,并确保选择列表中的表达式符合聚合查询的要求。
阅读全文