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

针对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客户端和服务器架构

    客户端-服务器(Client/Server)结构简称 C/S 结构,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。 MySQL是一个开源的关系型数据库管理系统,被广泛应用于Web应用开发和数据存储。MySQL的客户端和服务器架构是基于客户端/服务器模型构建的。在这种架构中,客户端通过网络向服务器发送请求,服务器处理请求并将结果返回给客户端。 M…

    MySQL 2023年3月8日
    00
  • 关于 MySQL 嵌套子查询中,无法关联主表字段问题的折中解决方法

    今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。 其实,问题的场景,非常简单: 就是需要查询出上图的数据,红框是从 项目产品表 中查询的2个字段,绿框是从与项目产品表关联的 文章表 中查询出的1个字段。我希望实现的效果是,获取到项目产品对应的文章提交人数,即该项目产品,有多少人提交了文章。看似很…

    MySQL 2023年4月12日
    00
  • MySQL中存储的数据查询的时候怎么区分大小写

    这篇文章主要介绍了MySQL中存储的数据查询的时候怎么区分大小写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中存储的数据查询的时候怎么区分大小写文章都会有所收获,下面我们一起来看看吧。 场景描述 今天在将 Hive 表同步到 MySQL 之后,其中有一列是唯一列,但是在 MySQL 中查询的时候 count 与 di…

    2023年4月8日
    00
  • Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用

    1. INTERVAL INTERVAL代表的是时间间隔MySQL中的时间间隔类型有如下几种:       1.1 利用INTERVAL做时间的加减法 示例: 加法:SQL>SELECT DATE ‘2018-11-01′ + INTERVAL ’10 11’ DAY_HOUR;结果:2018-11-11 11:00:00减法:SQL> sele…

    MySQL 2023年4月13日
    00
  • mysql优化limit查询语句的5个方法

    为了优化MySQL数据库的查询性能,我们需要对SQL语句进行优化,特别是对limit查询语句进行优化。下面是优化limit查询语句的5个方法的完整攻略: 1. 使用UNION ALL代替LIMIT OFFSET LIMIT OFFSET语句会导致MySQL数据库进行全表扫描,因此查询效率较低。我们可以使用UNION ALL代替LIMIT OFFSET语句。示…

    MySQL 2023年5月19日
    00
  • MySQL分页Limit的优化过程实战

    MySQL分页Limit的优化过程实战,主要包括以下几个步骤: 步骤一:查询总数 在进行分页查询时,通常需要查询数据表中总共有多少条数据。这个过程可以使用如下语句实现: SELECT COUNT(*) FROM 表名; 该语句会返回表中的总行数,我们可以将其保存到变量中,以供后续使用。 步骤二:查询指定页数据 查询指定页的数据时,可以使用LIMIT进行限制。…

    MySQL 2023年5月19日
    00
  • mysql 服务意外停止1067错误解决办法小结

    Mysql 服务意外停止1067错误解决办法小结 背景介绍 在使用 Mysql 数据库的过程中,可能会遇到服务意外停止的问题,错误码为1067。这种情况的出现,如果不及时解决的话,可能会导致数据库无法正常工作,对后续的数据操作带来很大影响。 解决办法 方法一:检查 Mysql 配置文件my.ini 首先,我们应该检查一下 Mysql 的配置文件 my.ini…

    MySQL 2023年5月18日
    00
  • MySQL远程无法连接的一些常见原因总结

    MySQL远程无法连接的一些常见原因总结 MySQL是一款十分流行的关系型数据库,常用于web应用和后端服务中。然而,在使用MySQL时,经常会遇到远程无法连接的问题。本文总结了一些常见的原因,并为解决这些问题提供了一些示例。 原因一:MySQL服务未启动 在无法连接MySQL时,首先需要检查MySQL服务是否已经启动。可以使用以下命令检查MySQL服务状态…

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