首页 > 数据库 > mysql教程 > 如何解决 MySQL 错误 #1140:'混合组列”?

如何解决 MySQL 错误 #1140:'混合组列”?

Linda Hamilton
发布: 2024-12-18 08:03:10
原创
902 人浏览过

How to Resolve MySQL Error #1140:

MySQL 错误#1140:了解“GROUP 列的混合”问题

MySQL 错误#1140,“GROUP 列的混合(如果没有 GROUP 列,则 MIN()、MAX()、COUNT()、...) 是非法的当您尝试聚合数据(例如,使用 COUNT() 等函数)而不对结果进行分组时,就会出现“GROUP BY 子句”。当 SQL 查询的 SELECT 子句中包含聚合函数和非聚合列,并且缺少 GROUP BY 子句时,可能会发生这种情况。

问题描述:

The以下 SQL 查询举例说明了此问题:

SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC
登录后复制

使用以下命令执行此查询在服务器上启用 ONLY_FULL_GROUP_BY 设置会导致错误消息:

#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
登录后复制

解决方案:

要解决此问题,必须禁用 ONLY_FULL_GROUP_BY 设置或强制执行SQL中的分组操作

  • 禁用 ONLY_FULL_GROUP_BY: 这可以通过更改 MySQL 配置文件并设置以下参数来实现:
only_full_group_by = 0
登录后复制
  • 强制分组:添加组查询的 BY 子句将解决该问题。在这种情况下,可以将分组应用于一个或多个字段(例如node.nid),以确保聚合函数(COUNT())仅应用于分组数据内。修改后的查询如下所示:
SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
GROUP BY node.nid
ORDER BY node_data_field_update_date_field_update_date_value DESC
登录后复制

通过应用这些解决方案中的任何一个,您可以绕过“混合组列”错误并成功检索聚合数据。

以上是如何解决 MySQL 错误 #1140:'混合组列”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板