Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

yizhihongxing

针对Mysql5.7及以上版本中出现的ONLY_FULL_GROUP_BY报错,我们可以采取以下的解决方法:

方法一:修改系统参数

  1. 使用管理员账号登录Mysql服务器
  2. 运行命令“show variables like 'sql_mode';”,查看当前的sql_mode值,可能会输出类似“ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION”的内容
  3. 将sql_mode参数中的ONLY_FULL_GROUP_BY选项删除或注释掉
  4. 如果是通过命令行客户端连接,可以在连接时指定参数的值:mysql -uroot -p -hlocalhost --init-command="SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';"
  5. 如果是通过配置文件设置参数,则在my.cnf或my.ini文件添加一行内容:sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

  6. 重启Mysql服务器

方法二:修改SQL语句

如果你不想修改系统参数,也可以在SQL语句中指定GROUP BY的字段,如下所示:

SELECT user_id, MAX(salary) FROM staff GROUP BY user_id;

例如,原来的SQL语句可能是这样的:

SELECT user_id, MAX(salary) FROM staff;

会报错,此时你可以使用以下的SQL语句:

SELECT user_id, MAX(salary) FROM staff GROUP BY user_id;

这样就可以避免报错了。

示例说明:

  1. 假设我们有一个表student,记录了学生们的学号、姓名和年龄等信息。现在需要查询每个学生的最高分数,可以使用如下的SQL语句:
SELECT id, name, MAX(score) FROM student;

按照上面的方法一,直接将系统参数中的ONLY_FULL_GROUP_BY选项删除或注释掉,即可避免报错。

  1. 假设我们有一个表order,记录了订单中商品的名称、价格和数量等信息。现在需要查询每个商品的总销售量,可以使用如下的SQL语句:
SELECT name, SUM(price * count) FROM order;

按照上面的方法二,指定GROUP BY的字段,如下所示:

SELECT name, SUM(price * count) FROM order GROUP BY name;

这样就可以避免报错了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • mysql中,通过json_insert函数向json字段插入键值?json_insert函数的使用?

    需求描述:   通过json_insert向json字段中插入值,在此进行实验,记录下. 操作过程: 1.查看已经有的包含json数据类型的表 mysql> select * from tab_json; +—-+——————————————————————–…

    MySQL 2023年4月13日
    00
  • navicat15安装破解教程

    navicat15安装破解教程 一.navicati15安装 参考教程 安装包文件查找过程不再这里赘述了,大家自行百度,相关经验帖很多。 二. 破解 启动破解工具,并点击Patch 点击后选择我们安装navicat的目录 注意第二步的相关配置 点击Generate生成key 打开navicat15,并选择code码激活,把刚才生成的key复制到当前框中,并点…

    MySQL 2023年4月17日
    00
  • 清晰讲解SQL语句中的内连接,通用于Mysql和Oracle,全是干货哦

    本文章目的:力求清晰明了讲解SQL语句的内连接的各种应用,没有深奥的理解! 前奏:这篇文章和下篇文章会将内连接和外连接讲解清楚SQL语句的多表查询常用的有以下几种:两表联合查询(1)内连接(2)外连接(分左外连接、右外连接)(3)全外连接(4)自连接三表查询(1)三表查询本片讲解两表联合查询的内连接:第一步:准备表,员工表emp,部门表dept关联关系:员工…

    MySQL 2023年4月13日
    00
  • GreatSQL社区月报 | 2023.03

    GreatSQL社区月报 | 2023.03 GreatSQL 是一个开源的 MySQL 技术路线数据库社区,社区致力于通过开放的社区合作,构建国内自主 MySQL 版本及开源数据库技术,推动中国开源数据库及应用生态繁荣发展。 为了帮助社区的小伙伴们更好地了解 GreatSQL 社区的实时进展,我们决定每月更新发布一次 GreatSQL 社区月报。月报的主要…

    MySQL 2023年4月17日
    00
  • 从linux系统mysql导出数据库

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/50763674   1、MySQL数据库导出 /usr/local/mysql/bin/mysqldump -u root -p123456 test> /home/backup/test.sql 其中:root为数据库用户名 123456…

    MySQL 2023年4月13日
    00
  • innodb_index_stats导入备份数据时报错表主键冲突的解决方法

    问题描述 在进行innodb_index_stats导入备份数据时,可能会遇到如下错误: ERROR 1062 (23000) at line X: Duplicate entry ‘XXXX’ for key ‘PRIMARY’ 这是因为在备份数据导入的过程中,出现了表主键冲突的情况。 解决方法 解决方法如下: 2.1 清空原表数据 首先需要清空原表数据,…

    MySQL 2023年5月18日
    00
  • MySQL数据库-错误1166 Incorrect column name

    当我们在使用MySQL数据库时,有时候会遇到错误1166,其中错误提示信息为“Incorrent column name”,这个错误通常是由于我们在MySQL的查询语句中使用了不存在的列而造成的。下面我将详细讲解如何解决这个问题。 1.检查列名是否正确 MySQL中的错误1166通常是由于我们在查询语句中使用了不存在的列名称造成的,所以我们需要检查列名是否正…

    MySQL 2023年5月18日
    00
  • navicat连接mysql时出现1045错误的解决方法

    下面是“navicat连接MySQL时出现1045错误的解决方法”的完整攻略: 问题描述 使用Navicat连接MySQL数据库时,可能会遇到以下错误提示: 1045 – Access denied for user ‘user_name’@’localhost’ (using password: YES) 这种问题通常是由于用户名或密码错误导致的,也可能是…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部