【报错解决】MySQL报错:sql_mode=only_full_group_by

文章目录
  • 报错信息
    • DataGrip 报错还原
    • Navicat 报错还原
  • 报错原因
  • 解决方案
    • 查看当前 sql mode
    • 方案一:临时解决
    • 方案二:永久解决
    • 方案三:使用 any_value() 或 group_concat()
    • 方案四:调整实现思路,避开 GROUP BY 使用

我是一名立志把细节说清楚的博主,欢迎【关注】?? ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ (^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


报错信息

DataGrip 报错还原

[42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xx库.xx表.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

在这里插入图片描述

Navicat 报错还原

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘school.student_100w.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

在这里插入图片描述

报错原因

MySQL 5.7后,MySQL的 SQL_MODE 配置项会默认包含 only_full_group_by 模式,这个配置会严格执行SQL92标准。如果代码中含有group by聚合操作,那么select中的列,除了使用聚合函数之外的,如max()、min()等,都必须出现在group by中。

要求:从学生表中,根据班级编号,分组查询班级编号、班级名称。

报错:SELECT 查询的字段和 GROUP BY 分组依据的字段不统一。

# SELECT 查询的字段和 GROUP BY 分组依据的字段不统一,会报错。
SELECT class_number, class_name FROM student GROUP BY class_number;

调整:将SELECT 查询的字段和 GROUP BY 分组依据的字段统一。

# SELECT 查询字段和 GROUP BY 分组依据的字段统一后就不会报错。
SELECT class_number, class_name FROM student GROUP BY class_number, class_name ;# SELECT 查询字段和 GROUP BY 分组依据的字段统一后就不会报错。
SELECT class_number FROM student GROUP BY class_number;

解决方案

查看当前 sql mode

执行 SQL 语句,查看当前的 sql_mode

SELECT @@global.sql_mode;

注意默认的列宽可能无法直接查看全部内容,容易造成误解,需要手动拉伸列宽查看。

在这里插入图片描述
拉伸列宽后可查看全部内容,(不同版本的 MySQL 默认值可能不同)。

在这里插入图片描述

方案一:临时解决

排除当前 sql_modeONLY_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';

但是如果当前数据库重启后,还是回归默认设置,即包含 ONLY_FULL_GROUP_BY 模式。

方案二:永久解决

  • windows系统,直接修改 my.ini 配置文件。
    在这里插入图片描述

[mysqld] 模块下新增一行配置:

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

注意:

  • 不能有多余的符号,我之前在结尾加了分号导致重启失败。
  • 点击保存文件,不要直接关掉。 不然设置丢失,是不会生效的。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f6c6cb0048814855854fefede42f0be4.png

Linux系统,思路是一样的,都是找配置文件修改配置。但是不同Mysql版本,路径和配置文件名称可能不同:大致可能是 /etc/my.cnf 或者 /mysql.conf 之类的名称。

数据库重启后生效。

方案三:使用 any_value() 或 group_concat()

  • any_value():

    • 将分到同一组的数据里第一条数据的指定列值作为返回数据。 (any_value()函数就是MySQL提供的用来抑制ONLY_FULL_GROUP_BY值被拒绝的)

    SELECT class_number, any_value(class_name) FROM student GROUP BY class_number;

实际使用效果如下:

在这里插入图片描述

  • group_concat():

    • 将分到同一组的数据默认用逗号隔开作为返回数据。

    SELECT class_number, group_concat(class_name) FROM student GROUP BY class_number;

实际使用效果如下:

在这里插入图片描述

方案四:调整实现思路,避开 GROUP BY 使用

通过对SQL的查询思路调整,代码逻辑调整等,部分场景是可以绕开对 GROUP BY 关键字筛选依赖的。这个需要结合实际业务场景,自己去思考调整了。


我是一名立志把细节说清楚的博主,欢迎【关注】?? ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ (^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15311.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postgresql 游标(cursor)的使用

概述 PostgreSQL游标可以封装查询并对其中每一行记录进行单独处理。当我们想对大量结果集进行分批处理时可以使用游标,因为一次性处理可能造成内存溢出。 另外我们可以定义函数返回游标类型变量,这是函数返回大数据集的有效方式,函数调用者…

十二、Docker Compose 部署 SpringCloudAlibaba 微服务

一、部署基础服务 0、项目部署结构 项目目录结构如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…

java项目之金华学校社团管理系统源码(ssm+mysql)

项目简介 金华学校社团管理系统实现了以下功能: 金华学校社团管理系统的主要使用者管理员对系统用户、公告信息进行管理。对社团信息进行管理,审核报名,统计社团报名结果等。学生维护个人信息,查看本校的社团信息,对…

deepseek+kimi自动生成ppt

打开deepseek官网,输入详细的需求,让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦,下载编辑使用吧

Shapefile格式文件解析和显示

Java实现GIS SHP文件格式的解析和显示,JDK19下编译,awt图形系统显示。 SHP文件对应的属性存储在DBF格式数据库中,解析见:DBASE DBF数据库文件解析_数据库文件在线解析-CSDN博客 解析SHP文件代码: public static Shap…

Golang 并发机制-7:sync.Once实战应用指南

Go的并发模型是其突出的特性之一,但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次,而不管有多少协程试图执行它。这听起来可能很简单,但它改变了并发环境中管理一次性操作的规则。…

【DeepSeek × Postman】请求回复

新建一个集合 在 Postman 中创建一个测试集合 DeepSeek API Test,并创建一个关联的测试环境 DeepSeek API Env,同时定义两个变量 base_url 和 api_key 的步骤如下: 1. 创建测试集合 DeepSeek API Test 打开 Postman。点击左侧导航栏中的 Co…

如何通过PHP接入DeepSeek的API

想知道如何通过PHP接入DeepSeek的API。看起来他对之前的Python步骤比较熟悉,但这次想用PHP实现。 首先,我需要回顾一下DeepSeek API的文档,确认它支持哪些方法和参数。假设用户已经配置了环境变量,比如API密钥,接下来…

网络工程师 (26)TCP/IP体系结构

一、层次 四层: 网络接口层:TCP/IP协议的最底层,负责网络层与硬件设备间的联系。该层协议非常多,包括逻辑链路和媒体访问控制,负责与物理传输的连接媒介打交道,主要功能是接收数据报,并把接收到…

每日Attention学习22——Inverted Residual RWKV

模块出处 [arXiv 25] [link] [code] RWKV-UNet: Improving UNet with Long-Range Cooperation for Effective Medical Image Segmentation 模块名称 Inverted Residual RWKV (IR-RWKV) 模块作用 用于vision的RWKV结构 模块结构 模块代码 注:cpp扩展请参考作者原…

vscode预览插件

在左侧列表拓展里搜索 Live Preview 安装,然后在html页面点击右键找到show Preview 结果如下图 然后就可以进行代码开发并实时预览了

【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战

【04】Java若依vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战 项目背景 本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了&#x…

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型,以其…

Windows下AMD显卡在本地运行大语言模型(deepseek-r1)

Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…

使用Pytorch训练一个图像分类器

一、准备数据集 一般来说,当你不得不与图像、文本或者视频资料打交道时,会选择使用python的标准库将原始数据加载转化成numpy数组,甚至可以继续转换成torch.*Tensor。 对图片而言,可以使用Pillow库和OpenCV库对视频而言&#xf…

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言:使用DeepSeek的api是收费的 免费版: 可能提供有限的免费额度(如每月一定次数的 API 调用),适合个人开发者或小规模项目。 付费版: 超出免费额度后,可能需要按…

git fetch和git pull 的区别

git pull 实际上就是 fetch merge 的缩写, git pull 唯一关注的是提交最终合并到哪里(也就是为 git fetch 所提供的 destination 参数) git fetch 从远程仓库下载本地仓库中缺失的提交记录,并更新远程分支指针 git pull抓取更新再合并到本地分支,相当于…

信息科技伦理与道德3-2:智能决策

2.2 智能推荐 推荐算法介绍 推荐系统:猜你喜欢 https://blog.csdn.net/search_129_hr/article/details/120468187 推荐系统–矩阵分解 https://blog.csdn.net/search_129_hr/article/details/121598087 案例一:YouTube推荐算法向儿童推荐不适宜视频 …

[LVGL] 在VC_MFC中移植LVGL

前言: 0. 在MFC中开发LVGL的优点是可以用多个Window界面做辅助扩展【类似GUIguider】 1.本文基于VC2022-MFC单文档框架移植lvgl8 2. gitee上下载lvgl8.3 源码,并将其文件夹改名为lvgl lvgl: LVGL 是一个开源图形库,提供您创建具有易于使用…

[RabbitMQ] RabbitMQ常见面试题

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…