Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.fruits.f_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
时间: 2023-07-14 20:14:27 浏览: 199
这个错误信息是因为在 MySQL 5.7.5 以后的版本中,sql_mode 默认开启了 ONLY_FULL_GROUP_BY 模式,该模式要求 GROUP BY 后面的列必须在 SELECT 中出现,或者在 SELECT 中使用聚合函数进行计算。
如果你的查询语句中出现了类似上面的错误信息,有两种解决方法:
1. 将 sql_mode 设置为非 only_full_group_by 模式,可以通过下面的语句实现:
```
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
2. 在 GROUP BY 后面的列中加入所有 SELECT 中出现的列,或者使用聚合函数进行计算,例如:
```
SELECT fruits.f_id, fruits.f_name, COUNT(*) FROM fruits GROUP BY fruits.f_id, fruits.f_name;
```
相关问题
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dx2.a.admin_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这是一个SQL查询错误,出现了与"only_full_group_by"模式不兼容的问题。在这种模式下,如果SELECT列表中的某个表达式不在GROUP BY子句中,并且该表达式包含了非聚合的列,就会报错。
要解决这个问题,你可以尝试以下几种方法之一:
1. 将SELECT列表中的表达式添加到GROUP BY子句中。
2. 将非聚合的列包装在聚合函数中,例如使用SUM、COUNT等函数来处理它们。
3. 修改MySQL配置文件,禁用"only_full_group_by"模式。你可以在my.cnf文件中找到sql_mode选项并将其修改为合适的值。
请注意,具体的解决方法可能因你的查询和数据结构而异。如果你能提供更多的查询代码和表结构信息,我可以给出更具体的帮助。
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'smart.sm_c_talking_content_info.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的字段,或者使用聚合函数对没有包含在GROUP BY语句中的字段进行聚合。如果某个字段在GROUP BY语句中没有出现,同时也没有使用聚合函数进行聚合,就会出现上述错误。
解决这个问题的方法有两种:
1. 修改sql_mode参数,将其设置为非only_full_group_by模式。可以通过以下命令查看当前的sql_mode参数:
SELECT @@sql_mode;
如果结果中包含only_full_group_by,则说明当前设置为该模式。可以通过以下命令将其修改为默认模式:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
注意,修改全局的sql_mode参数可能会影响其他应用程序的正常运行,因此需要谨慎操作。
2. 在GROUP BY语句中包含所有SELECT的字段,或者使用聚合函数对没有包含在GROUP BY语句中的字段进行聚合。例如:
SELECT id, MAX(name) FROM table1 GROUP BY id;
上述语句中,虽然只有id和name两个字段被SELECT出来,但是在GROUP BY语句中包含了id字段,同时使用了MAX函数对name字段进行了聚合,因此不会出现上述错误。
阅读全文