mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nonaggregated column…原因及解决方案

在项目中需要用到group by进行聚合计算,在计算的同时也要查出一些其他字段来返回给前端。于是就有了这个错误的出现。

先简单复现我所写的sql,其实sql非常简单。

select
channel_name as channelName,
brand_name as brandName,
sum(actual_value) as actualValue,
sum(actual_value_ty) as actualValueTy,
sum(actual_value_ly) as actualValueLy,
sum(target_value) as targetValue
from bu_channel_base_performance
group by channel_name
然后就是这样一段sql在运行时候报错如标题所示,

这种模式的官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode, 通过这个 sql_mode 来保证, SQL语句 “分组求最值” 合法性的检查. 这种模式采用了与 Oracle、DB2 等数据库的处理方式。即不允许 select target list 中出现语义不明确的列.

对于用到 GROUP BY 的 select 语句, 查出来的列必须是 group by 后面声明的列, 或者是聚合函数里面的列有这样一个数据库的表.

因此,这种模式的特点是:

1:只要有聚合函数 sum(),count(),max(),avg() 等函数就需要用到 group by , 否则就会报上面的错误.

2:group by id (id 是主键) 的时候, select 什么都没有问题, 包括有聚合函数.

3:group by role (非主键) 的时候, select 只能是聚合函数和 role ( group by 的字段) , 否则报错

而解决方案,大家则都是给出了相同的方案,修改mysql配置文件,即:

select @@sql_mode;
先查看自己mysql的mode配置,一般不出意外都是:ONLY_FULL_GROUP_BY。

此时,方案就是修改sql_mode:

sql_mode=”STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION”

倘若你通过修改sql能够解决问题而不影响你的结果,那么个人认为最好是优先修改sql。

Original: https://www.cnblogs.com/zmdComeOn/p/16061090.html
Author: 子钦加油
Title: mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nonaggregated column…原因及解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/814614/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基础的强化学习(RL)算法及代码详细demo

    文章目录 * – + 一、Sarsa (悬崖问题) + * 1.1 CliffWalking-v0环境介绍 * 1.2 Sarsa算法流程 * 1.3 具体代码 * 1…

    Python 2023年8月2日
    0111
  • Java开发学习(三十)—-Maven聚合和继承解析

    一、聚合 分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的 install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是…

    Python 2023年10月23日
    027
  • 观察者模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 弹尽粮绝,会员救园:…

    Python 2023年10月13日
    039
  • Pandas与NumPy区别以及dataframe和ndarray对象转换

    区别 Pandas 和 NumPy 被认为是科学计算与机器学习中必不可少的库,因为它们具有直观的语法和高性能的矩阵计算能力。下面对 Pandas 与 NumPy 进行简单的总结,如…

    Python 2023年8月8日
    070
  • DataFrame基本操作

    1.建立dataframe (1)Dict to Dataframe df = pd.DataFrame({‘key1’:[‘a’,’a’,’b’,’b’,’a’],’key2′:…

    Python 2023年8月8日
    051
  • [ Skipper ] 快速 LVL

    https://www.cnblogs.com/yeungchie/ ski-flashlvl ski-flashlvl top1.gds cell1 top2.gds cell2…

    Python 2023年6月16日
    0109
  • 全网首发,你没玩过的pygame小游戏开发:马赛逻辑

    一、游戏简介 马赛逻辑,是一个类似数独和扫雷的逻辑小游戏,根据棋盘周围的数据提示点亮方格,因外形像马赛克而得名。在手机游戏中有多款 APP 可以体验该游戏,如 Peak、Nonog…

    Python 2023年9月19日
    055
  • 结构体嵌套函数指针

    这次来记录一下结构体嵌套函数指针 这个知识点想了2天终于搞懂了。 先看代码,试着理解一下,不理解再看我后面的解释。 解释: 首先,和平常创建一个结构体一样,唯独不同的就是里面的变量…

    Python 2023年9月29日
    060
  • python-面向对象属性的访问与self的理解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Python 2023年6月9日
    066
  • windows环境下_Django3.2+django_apscheduler0.6实现异步定时计划任务

    windows环境下python3.7+Django3.2+django_apscheduler0.6实现定时任务 最近在做一个Django项目的时候,遇到了这样一个问题:我需要每…

    Python 2023年8月6日
    059
  • python调用dll

    动态链接库: void SayHello() {    MessageBox(NULL,                TEXT("你好你好~~~"),    …

    Python 2023年8月3日
    052
  • Django概述(第三章)模型

    一. 定义与使用模型这是大概的步骤:1.一般是和mysql数据库连接,所以需要注意:在项目中的settings.py文件中配置参数如下:连接数据库 DATABASES = { ‘d…

    Python 2023年8月4日
    051
  • Python爬虫编程思想(158):Scrapy中的下载器中间件

    Scrapy允许使用中间件干预数据的抓取过程,以及完成其他数据处理工作。其中一类非常重要的中间件就是下载器中间件。下载器中间件可以对数据的下载和处理过程进行拦截。在Scrapy爬虫…

    Python 2023年10月4日
    044
  • Flask+gunicorn部署HTTP服务

    FLASK Flask提供了HTTP开发服务的框架,但是他本身不提供HTTP Server。内部集成的一个简单的Server只是用于开发调试。 Flask内部的HTTP服务只用于开…

    Python 2023年8月15日
    059
  • 爬取 flbook 文档

    需求介绍 由于实习期间被主管委派了下载下来《安徽省助企政策汇编》的任务,去大概搜索了解了一下 flbook 网站,发现该网站并不提供已经发布的文档的下载渠道(感觉挺莫名其妙的,都公…

    Python 2023年11月1日
    039
  • pygame入门3

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年9月20日
    029
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球