首页 > 数据库 > mysql教程 > 如何解决MySQL的'SELECT列表不在GROUP BY子句中”错误?

如何解决MySQL的'SELECT列表不在GROUP BY子句中”错误?

DDD
发布: 2024-12-22 16:40:13
原创
193 人浏览过

How to Resolve MySQL's

MySQL 中“SELECT 列表不在 GROUP BY 子句中”错误的疑难解答

错误“SELECT 列表的表达式 #1 不在 GROUP BY 子句中”当查询结果包含非聚合列时,MySQL 中通常会出现“GROUP BY 子句并包含非聚合列”的情况。包含在 GROUP BY 子句中。这是由于 sql_mode=only_full_group_by 设置,该设置强制执行更严格的分组规则。

要解决此问题,有多种解决方案:

  1. 禁用 sql_mode=only_full_group_by: 这可以通过以下方式完成命令:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
登录后复制
  1. 在 GROUP BY 子句中包含所有选定的列: 这可确保 SELECT 列表中的所有列都包含在 GROUP BY 操作中。例如:
SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`, `id`
登录后复制
  1. 使用聚合函数:不要选择单个列,而是使用聚合函数,例如 SUM()、COUNT() 或 AVG( ) 对数据进行分组。这消除了对 GROUP BY 子句的需要。例如:
SELECT `proof_type`, COUNT(*) AS `document_count`
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`
登录后复制

需要注意的是,更改 SQL 模式并不是最佳实践。首选的解决方案是修改查询以符合更严格的分组规则。

以上是如何解决MySQL的'SELECT列表不在GROUP BY子句中”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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