解决 MySQL 中的“混合组列”错误
MySQL 中的 #1140 错误,指示“混合组列”,当查询在 SELECT 子句中包含非聚合(非 GROUP)列同时还包含聚合列时,会出现此问题没有 GROUP BY 子句。为了解决这个问题,主要有两种方法:
1.禁用 ONLY_FULL_GROUP_BY:
MySQL 有一个名为 ONLY_FULL_GROUP_BY 的配置设置,默认为 ON。此设置强制执行严格的 GROUP BY 语义,要求 SELECT 子句中的所有非聚合列都包含在 GROUP BY 列表中。要禁用此设置,请执行以下查询:
SET SESSION ONLY_FULL_GROUP_BY = OFF;
禁用 ONLY_FULL_GROUP_BY 以允许查询在不修改的情况下执行。
2.添加 GROUP BY 列:
或者,您可以修改查询以包含 GROUP BY 子句中的所有选定字段。这可以确保所有非聚合列都被“分组”,并且结果集满足严格的 GROUP BY 语义:
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, node_data_field_update_date.field_update_date_value ORDER BY node_data_field_update_date_field_update_date_value DESC;
修改查询以包含 GROUP BY 子句可以通过显式对结果进行分组来解决问题在所有非聚合列上设置。
以上是如何解决MySQL的'混合组列”错误(错误#1140)?的详细内容。更多信息请关注PHP中文网其他相关文章!