not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
时间: 2023-02-13 19:58:04 浏览: 144
这是 MySQL 的一个错误消息,意思是你的 SQL 语句中的某个列在 `GROUP BY` 子句中不是功能依赖的,这和 `sql_mode=only_full_group_by` 不兼容。
这个错误通常是由于你的 SQL 语句中使用了 `SELECT` 子句中的某些列,但没有在 `GROUP BY` 子句中明确指定这些列。为了避免这种错误,你应该在 `GROUP BY` 子句中指定所有在 `SELECT` 子句中使用的列,或者禁用 `only_full_group_by` 模式。
例如,下面的 SQL 语句会导致这个错误:
```
SELECT col1, col2
FROM table
GROUP BY col1;
```
因为在 `SELECT` 子句中使用了 `col2`,但没有在 `GROUP BY` 子句中指定。为了避免这种错误,应该改为:
```
SELECT col1, col2
FROM table
GROUP BY col1, col2;
```
相关问题
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子句中的列不是函数依赖的,这与严格模式不兼容。
在MySQL的严格模式下,当使用GROUP BY子句进行分组查询时,SELECT语句中的列必须满足以下两个条件之一:
1. 在GROUP BY子句中明确列出;
2. 是聚合函数(如SUM、COUNT、MAX等)的参数。
如果SELECT语句中的列既不在GROUP BY子句中,也不是聚合函数的参数,那么就会出现这个错误。
为了解决这个问题,你可以采取以下几种方法之一:
1. 将SELECT语句中的列添加到GROUP BY子句中;
2. 将SELECT语句中的列改为聚合函数的参数;
3. 修改MySQL的sql_mode配置,将其设置为兼容模式,如:SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
"which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by" 的意思是在使用GROUP BY语句查询时,SELECT列表中的某些列与GROUP BY子句中的列没有函数依赖关系,这在sql_mode为only_full_group_by时是不兼容的。
这个错误通常在MySQL 5.7.9版本中出现,由于sql_mode的设置导致。在sql_mode为only_full_group_by时,MySQL要求在使用GROUP BY语句时,SELECT列表中的非聚合列必须与GROUP BY子句中的列有函数依赖关系。也就是说,SELECT列表中的非聚合列必须在GROUP BY子句中出现或者通过聚合函数进行处理。
为了解决这个问题,你可以采取以下几种方法之一:
1. 将sql_mode设置为允许非严格模式,即设置sql_mode为不包含only_full_group_by选项的值。
2. 将SELECT列表中的非聚合列移除,或者将其包含在GROUP BY子句中。
3. 使用聚合函数处理SELECT列表中的非聚合列,例如使用MIN()、MAX()、SUM()等函数。
需要注意的是,选择哪种方法取决于你的具体需求和查询语句的逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列](https://blog.csdn.net/weixin_38170853/article/details/102336176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [解决MySQL 5.7.9版本sql_mode=only_full_group_by问题](https://download.csdn.net/download/weixin_38697063/13699570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [记一次Group by 查询时的ONLY_FULL_GROUP_BY错误以及后续](https://blog.csdn.net/Abysscarry/article/details/79468411)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文