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中文网其他相关文章!