Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column
时间: 2023-11-17 10:59:34 浏览: 291
这个错误信息是MySQL数据库返回的错误信息,意思是在SELECT语句中,第三个选择的列不在GROUP BY子句中,且不是聚合函数,这与当前的SQL模式(only_full_group_by)不兼容。这个错误通常是由于在GROUP BY子句中没有包含所有的非聚合列而导致的。解决这个问题的方法是要么将所有的非聚合列都包含在GROUP BY子句中,要么将它们转换为聚合函数。
相关问题
Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'bookstore.book.图书编号' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这个错误是因为你的SQL查询语句中使用了GROUP BY语句,但是SELECT语句中的列没有在GROUP BY语句中出现,也没有使用聚合函数进行计算。这在MySQL5.7.5之后的版本中是默认启用的,目的是为了避免潜在的错误。
解决这个错误的方法是在GROUP BY语句中包含所有SELECT语句中的列,或者在使用聚合函数时对这些列进行计算。例如,你可以这样修改你的查询语句:
```
SELECT 图书编号, COUNT(*)
FROM book
GROUP BY 图书编号;
```
这样就会对每个图书编号进行计数,并且不会出现上述错误。
09:24:16 SELECT name, 80 - tot_cred AS credits_left FROM student WHERE dept_name = 'Comp. Sci.' GROUP BY name HAVING credits_left > 0 ORDER BY credits_left ASC LIMIT 0, 10 Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'lab.student.tot_cred' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.000 sec
这个错误是由于在MySQL的新版本中,如果使用了`GROUP BY`语句,那么在`SELECT`语句中不能出现未被聚合的列。
你可以通过将`tot_cred`列聚合一下,或者将其加入到`GROUP BY`语句中来解决这个问题。
以下是修改后的MySQL语句:
```
SELECT name, 80 - SUM(tot_cred) AS credits_left
FROM student
WHERE dept_name = 'Comp. Sci.'
GROUP BY name
HAVING credits_left > 0
ORDER BY credits_left ASC
LIMIT 0, 10;
```
在这个语句中,我们使用了`SUM`函数将`tot_cred`列聚合起来,以便在`SELECT`语句中使用。
同时,我们也将`name`列加入到`GROUP BY`语句中。
这个修改后的语句应该可以正确地返回结果了。
阅读全文