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

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

Barbara Streisand
Barbara Streisand原创
2024-12-29 16:51:17752浏览

How to Resolve MySQL Error #1140: Mixing of GROUP Columns?

MySQL 错误 #1140:混合 GROUP 列

当 MySQL 查询将 GROUP 函数与非 GROUP 列混合时,会发生此错误SELECT 列表,但没有 GROUP BY 子句。换句话说,它建议某些选定的列应分组在一起,而其他列则不应分组。

考虑以下 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;

此查询正在尝试对类型“update”的节点数量,并检索每个节点的节点 ID (nid) 和更新日期。但是,它将 GROUP 函数 COUNT() 与 SELECT 列表中的非 GROUP 列 nid 和 node_data_field_update_date_field_update_date_value 混合在一起。

要解决此错误,请禁用 MySQL 服务器上的 ONLY_FULL_GROUP_BY 设置或修改查询以进行分组非团体列:

禁用 ONLY_FULL_GROUP_BY:

mysql> SET GLOBAL ONLY_FULL_GROUP_BY = OFF;

向查询添加分组:

SELECT COUNT(node.nid) AS node_count,
       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, node_data_field_update_date.field_update_date_value
ORDER BY node_data_field_update_date_field_update_date_value DESC;

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn