1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test1.tb_course.course_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
时间: 2023-07-18 08:35:16 浏览: 145
这个错误是由于 MySQL 的 sql_mode 配置为 only_full_group_by 模式导致的。这个模式要求在 GROUP BY 子句中出现的每个列,在 SELECT 子句中都必须出现且必须进行聚合操作(如 COUNT、SUM、AVG 等),否则就会报错。
解决这个问题可以有以下两种方式:
1. 将 sql_mode 配置修改为非 only_full_group_by 模式,或者将其禁用。
2. 在 SELECT 子句中将需要显示的列进行聚合操作,或者将其移动到 GROUP BY 子句中。
例如,可以将 SQL 语句修改为:
SELECT course_id, course_name, COUNT(*) AS count
FROM tb_course
GROUP BY course_id, course_name;
这样就可以避免这个错误了。
相关问题
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
这个错误是由于在SQL查询中,SELECT列表中的某一列没有包含在GROUP BY子句中,并且该列不是聚合列导致的。这个错误通常发生在使用GROUP BY子句进行分组查询时。
解决这个问题的方法有两种:
1. 将SELECT列表中的所有列都添加到GROUP BY子句中。这样可以确保所有的列都被正确地分组。
2. 如果你只想要对某些列进行分组,而不是所有的列,可以使用聚合函数对其他列进行处理。例如,使用SUM、COUNT、MAX等聚合函数来处理非分组列。
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column。
这个错误通常是因为在 SELECT 语句中,有些列没有被包含在 GROUP BY 子句中,而且这些列也没有被聚合函数(如 SUM、COUNT 等)所包含。这在 MySQL 5.7 版本之后是默认的行为,可以通过设置 sql_mode 来改变。
如果你想要解决这个问题,可以将所有未聚合的列都添加到 GROUP BY 子句中,或者使用聚合函数来计算这些列的值。
阅读全文