[42000][1140] In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggreg

2023-11-10

项目报错error:

expression #2 of SELECT list contains nonaggregated column 'newhelp.appr.title'; this is incompatible with sql_mode=only_full_group_by

这是因为随着MySQL版本更新带来的问题,在MySQL5.7版本之后对group by进行了优化。他默认启动改进之后的
版本启动了ONLY_FULL_GROUP_BY模式。

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

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

select语句:select id, sum(appr_id) from appr group by id------------------------------------(合法)

select语句:select id, user_id, sum(appr_id) from appr group by id-------------------------(合法)

select语句:select id, sum(appr_id) from appr group by role----------------------------------(不合法)

select语句:select id, user_id, sum(appr_id) from appr group by role-----------------------(不合法)

select语句:select * from appr group by role-------------------------------------------------------(不合法)

经过大量测试:笔者发现了ONLY_FULL_GROUP_BY这种模式的特点:

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

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

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

如果我们不想用用ONLY_FULL_GROUP_BY的模式。有两种解决这种问题的方案:

1:进入mysql.exe,

(如果直接点击exe会闪退,打开cmd进入mysql所在盘,进入mysql文件夹,即输入cd mysql,再进入bin文件夹,即输入cd bin,最后输入mysql -uroot -proot ,-u后是账号 -p后是密码)

命令行中输入:

查看sql_model参数命令:

SELECT @@GLOBAL.sql_mode;

SELECT @@SESSION.sql_mode; 

可以看到框内第一个显示的就有 ONLY_FULL_GROUP_BY

去除的指令:

set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

再次输入查看指令,可以发现 ONLY_FULL_GROUP_BY 已经去除
不过这种情况治标不治本,一旦mysql重启之后又会恢复。

2:修改MySQL的配置文件,

windows下找到MySQL的安装目录的my.ini文件,修改其中的配置为不启动ONLY_FULL_GROUP_BY模式,

删掉带有ONLY_FULL_GROUP_BY的模式就ok了。

如果本身就没有写这个配置,将以下复制到文件中的[mysqld]下:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如果mysql是8.0及以上的版本,使用如下配置:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
与前面的相比, 删去了 NO_AUTO_CREATE_USER, 因为8.0以上已经取消了这个关键字

如果没有找到my.ini文件,
去系统的隐藏文件夹查看,在某个盘下输入%ProgramData%然后搜索MySQL的my.ini文件
————————————————

参考链接:https://blog.csdn.net/qq_43279637/article/details/84842189

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[42000][1140] In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggreg 的相关文章

  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • 支持 >65k 行的 Excel VBA SQL 驱动程序

    在 Excel 2010 中通过 VBA 查询 Excel 数据时 我遇到一个有趣的问题 我正在使用这些驱动程序连接到 xls 或 xls x m 文件 Sub OpenCon ByRef theConn As Connection ByV
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 总和和不同不会改变结果?

    我是一个新手 试图在这里解决这个问题 到目前为止还没有运气 非常感谢任何帮助 Select Distinct AB agency no ab branch no AS AGENCY BRANCH count AB agency no ab
  • mysql 如何将 varchar(10) 转换为 TIMESTAMP?

    我已将所有日期存储到数据库中varchar 10 现在我想将它们转换为 TIMESTAMP 当我运行sql时 ALTER TABLE demo3 CHANGE date date TIMESTAMP NOT NULL 它提醒 1292 In
  • CakePHP 查找 - 按字符串到整数排序?

    我想使用 CakePHP 从数据库中提取照片数组 按照片标题排序 0 1 2 3 我的查询当前看起来像 ss photos this gt Asset gt find all array conditions gt array kind g
  • 随着时间的推移累积(不重叠)——技术?

    我正在尝试找到一种更好的方法来制作水晶报告 其他人的 按组添加不重叠的时间 这显然是一个古老的问题 有没有一种技术可以得到 调整每条记录的 开始 结束 时间 以消除共同 重叠时间 亚组内 使用直接 SQL 尽管我发现我可以执行 CTE 假设
  • 如何使用 MySQL 选择有特定值的 2 个连续行?

    我正在构建一个系统 该系统应该显示学生何时连续缺席两天 例如 此表包含缺勤情况 day id missed 2016 10 6 1 true 2016 10 6 2 true 2016 10 6 3 false 2016 10 7 1 tr
  • 拥有更多列或更多行会更高效吗?

    我目前正在重新设计一个可能包含大量数据的数据库 我可以选择在数据库中包含许多不同的列或使用大量行 如果我在下面做一些大纲 可能会更容易 item id user id title description content category t
  • 如何从 MySQL 数据查询创建 XML 文件?

    我想知道一种仅使用 MySQL 查询创建 XML 文件的方法 根本不使用任何脚本语言 有关于这个主题的书籍 教程吗 UPDATE 我想澄清一下 我想使用 sql 查询将 XML 数据转发到 php 脚本 Here s 关于从 MySQL S
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • 默认情况下在sql日期时间列中插入null/空值

    如何在 SQL Server 中创建一个表 默认日期时间为空 而不是1900 01 01 00 00 00 000我得到了 我的意思是 如果没有插入值 则默认值应该为 null 空等 如果没有插入值 默认值应该是null empty 在表定
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • ThreadPoolExecutor使用示例,请给出详细代码示例

    import java util concurrent Executors import java util concurrent ThreadPoolExecutor import java util concurrent TimeUni
  • 相关系数,互相关函数,协方差,卷积

    X t 为随机过程 a t E X t 为期望 Y t 为另一随机过程 自相关函数的定义为 R s t E X s X t 互相关函数的定义为 R s t E X s Y t 事实上 在图象处理中 自相关和互相关函数的定义如下 设原函数是f
  • CSS滤镜 filter 网站灰色设置

    webkit filter grayscale 100 moz filter grayscale 100 ms filter grayscale 100 o filter grayscale 100 filter grayscale 100
  • 安装虚拟网络服务器,云服务器安装虚拟网络设置方法

    云服务器安装虚拟网络设置方法 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时 如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时 您需要修改网卡属性为DHCP 以使私有镜像发放的新云服务器可以动态获取IP地址 不同操作
  • NMAKE程序维护工具

    用法 NMAKE commandfile NMAKE options f makefile x stderrfile macrodefs targets 选项 A 生成所有已计算的目标 B 如果时间戳相等则生成 C 取消输出消息 D 显示生
  • 【2020】奇安信秋招C/C++方向试卷3

    这种试卷根本不会做 老板一共需要给某个员工发奖金n元 可以选择一次发1元 也可以选择一次发2元 也可以选择一次发3元 请问老板给这位员工发放完n元奖金共有多少种不同的方法 数据范围 1 lt n lt 10 class Solution p
  • 【pytorch】固定(freeze)住部分网络

    前言 最好 最高效 最简洁的 是 方案一 方案一 步骤一 固定基本网络 代码模板 获取要固定部分的state dict pre state dict torch load model path map location torch devi
  • 第十四届教育技术与计算机国际会议新增SSCI, ESCI期刊

    第十四届教育技术与计算机国际会议 ICETC 2022 特增SSCI ESCI期刊啦 组委会将从会议录用并注册的文章中遴选优秀文章推荐到以下SSCI ESCI期刊 被选中的文章作者需要在被会议接收的文章基础上增加至少50 的新内容 Adva
  • 机器学习竞赛中取胜

    摘要 本文总结由Marios Michailidis a k a Kazanova Kaggle Grandmaster在2016年3月5日现在排名第3位的在线研讨会上分享的技巧 更好地在机器学习竞赛中取胜 更多深度文章 请关注 https
  • DFS(深度优先遍历)解题思路

    DFS主要可以用于解决三种问题 1 可达性 连通性问题 LeetCode上适用题目 695 查找最大的连通面积 200 矩阵中的连通分量数目 547 好友关系的连通分量数目 130 填充封闭区域 417 能到达的太平洋和大西洋的区域 2 排
  • 字节实习三个月的感受随笔

    我是23届的研究生 双飞本 985硕士 自2022年3月准备春招实习以来 面试了微软 字节 网易 蔚来 美团 拼多多 过了一面放弃 阿里等公司 最终字节 网易和蔚来给了offer 当然 也有京东这种给日常实习的 就不算了 最后选了字节 所以
  • 莱昂哈德·欧拉生平及其成就简介

    莱昂哈德 欧拉 Leonhard Euler 1707年4月15日 1783年9月18日 瑞士数学家 自然科学家 1707年4月15日出生于瑞士的巴塞尔 1783年9月18日于俄国圣彼得堡去世 欧拉出生于牧师家庭 自幼受父亲的影响 13岁时
  • QT信号与槽的连接后槽函数执行方式

    问题 信号与槽是QT特有的一种功能吧 当使用connect函数将一个信号于一个槽函数绑定过后 那么信号当emit后 就会执行与之绑定的槽函数 那么问题来了 这个执行方式是怎样的 是立刻的还是异步的 如果是立刻的就是以中断形式去执行的 异步的
  • 搭建大数据环境之前(准备环境--虚拟机配置)遇到的一些问题(基于centos73--1611)

    这篇文章不讲如何安装虚拟机和虚拟机软件 网上教程一大把 自行参考 我只是说说我遇到的一些小问题 1 这个问题也是我最无奈的问题 敲ifconfig 发现en33没有ipv4地址 只出现乱七八糟的东西 ping 一些公网主机也失败 大概就是网
  • SQL中去除重复数据的几种方法,我一次性都告你​

    使用SQL对数据进行提取和分析时 我们经常会遇到数据重复的场景 需要我们对数据进行去重后分析 以某电商公司的销售报表为例 常见的去重方法我们用到distinct 或者group by 语句 今天介绍一种新的方法 利用窗口函数对数据去重 字段
  • 安装Linux系统时选择内核,深度Deepin 20系统中Stable和LTS双内核的选择和手动安装方法...

    本文介绍深度Deepin 20系统中Stable和LTS双内核的选择和手动安装方法 系统安装时选择不同内核方法 如何手动安装双内核 包括卸载其中一个内核的方法 以Deepin 20 1版本为例 前言 深度操作系统Deepin 20集成Sta
  • 关于显著性检验,你想要的都在这儿了!!(基础篇)

    https www cnblogs com hdu zsk p 6293721 html
  • 选择排序(C)

    选择排序 顾名思义 先在数据集合中选出最大或最小元素的位置 依次排列位置顺序 之后再从剩余元素中找出最大或最小元素的位置 排于其次 直到仅剩一个元素时 完成排序 算法描述 假设 对于集合N len 进行选择排序 i 为排序次数 0 lt i
  • cv2.threshold()

    他的返回值有两个 一个是设定的阈值 一个是输出的图像 eg cv2 threshold img thresh max type 的返回值就是max和输出的二值图 img是输入图像 thresh是设定的阈值 max是过限赋值 type是方法
  • [42000][1140] In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggreg

    项目报错error expression 2 of SELECT list contains nonaggregated column newhelp appr title this is incompatible with sql mod