"In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'shuju.lab.recording_id'; this is incompatible with sql_mode=only_full_group_by"
时间: 2023-10-21 14:28:48 浏览: 153
这个错误是因为 MySQL 的sql_mode默认启用了only_full_group_by模式,该模式要求在聚合查询中,SELECT列表中除了聚合函数之外的列必须都出现在GROUP BY子句中。如果SELECT列表中有非聚合列没有出现在GROUP BY子句中,就会出现这个错误。
解决这个问题的方法有两种:
1. 关闭only_full_group_by模式:可以通过修改MySQL的配置文件来关闭only_full_group_by模式。具体方法是在MySQL配置文件中的[mysqld]节点下添加以下一行代码:
```
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
2. 修改SQL语句:在SELECT列表中,把非聚合列都添加到GROUP BY子句中,例如:
```
SELECT lab.recording_id, COUNT(*) FROM shuju.lab GROUP BY lab.recording_id;
```
相关问题
In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'dagp.asm_asmnt_solutn.asmnt_solutn_nm'; this is incompatible with sql_mode=only_full_group_by
这个错误消息表示在没有使用GROUP BY的聚合查询中,SELECT列表的第2个表达式包含了非聚合列 'dagp.asm_asmnt_solutn.asmnt_solutn_nm',这与sql_mode=only_full_group_by不兼容。
在这种情况下,你需要确保SELECT列表中的非聚合列要么被包含在GROUP BY子句中,要么使用聚合函数进行处理。只有这样才能符合sql_mode=only_full_group_by的要求。
你可以尝试将 'dagp.asm_asmnt_solutn.asmnt_solutn_nm' 列添加到GROUP BY子句中,或者使用聚合函数(如MAX、MIN、SUM等)对该列进行处理。这样就可以解决这个问题。
09:30:51 select max(num) as maxpeople from take1 LIMIT 0, 10 Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'lab.section.course_id'; this is incompatible with sql_mode=only_full_group_by
这个错误是由于 MySQL 的 SQL 模式中启用了 `only_full_group_by`,这个模式要求在 SELECT 语句中,如果使用了聚合函数,那么 SELECT 中的列必须要进行分组。在你的 SELECT 语句中,你使用了 `MAX()` 聚合函数,但是你的 SELECT 中还包含了 `lab.section.course_id` 列,这个列没有进行分组,所以就出现了错误。
要解决这个问题,可以在 SELECT 语句中添加 `GROUP BY` 子句,将需要聚合的列进行分组,例如:
```
SELECT lab.section.course_id, MAX(num) as maxpeople
FROM take1
GROUP BY lab.section.course_id
LIMIT 0, 10;
```
这样就可以正确地计算出每个课程的最大选课人数了。
阅读全文