广告位联系
返回顶部
分享到

高版本Mysql使用group by分组报错的解决方案

Mysql 来源:互联网 作者:佚名 发布时间:2023-03-05 08:25:07 人浏览
摘要

Mysql5.7版本以上对group by 分组有了新需求,要求group by 后的字段要与select后查询的字段一致,否则就会报错,报错信息如下: #1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains

Mysql5.7版本以上对group by 分组有了新需求,要求group by 后的字段要与select后查询的字段一致,否则就会报错,报错信息如下:

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

通过报错分析是由于group by 后的分组字段与查询字段不一致导致。

解决方案:

方法一:补全group by 后字段(不推荐这种方法,有时要查询的字段很多而且字段的内容不能保证不重复,如果全部补齐会造成查询数据丢失)。

方法二:修改配置

1)使用navicat管理工具连接mysql数据库

打开navicat管理工具,按F6打开命令界面,依次输入以下语句

1

select @@global.sql_mode;

1

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

1

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

截图如下:

再重新执行就会发现不再报错。

2)使用cmd命令行更改

按win+r打开运行界面,输入cmd打开命令行界面

打开后切换目录到mysql安装包的bin目录下,具体操作如下图(根据自己路径切换)

连接数据库,输入mysql -u root -p,按回车再输入数据库密码

连接成功后再依次输入以下语句

1

select @@global.sql_mode;

1

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

1

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

截图如下:

至此配置结束


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/qq_43486404/article/details/126744365
相关文章
  • order by + limit分页时数据重复问题及解决方法

    order by + limit分页时数据重复问题及解决方法
    问题描述:MYSQL version 5.6.8command 表结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE TABLE command ( ID INT NOT NULL, NAME VARCHAR(16), DESCRIPTION VARCHAR(32), INDE
  • 高版本Mysql使用group by分组报错的解决方案

    高版本Mysql使用group by分组报错的解决方案
    Mysql5.7版本以上对group by 分组有了新需求,要求group by 后的字段要与select后查询的字段一致,否则就会报错,报错信息如下: #1055 - Expressi
  • 在SQL中修改数据的基础语句
    什么是修改? 在SQL中的基本操作就是增删改查,查询语句不会对数据库中的数据进行修改。 而其余的三种操作都会对数据库进行修改,不管
  • MySQL字符串前缀索引使用

    MySQL字符串前缀索引使用
    1. 前缀索引与全部索引概念 怎么给字符串字段加索引?现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,
  • MySql深分页问题解决
    1. 问题描述 日常开发中经常会涉及到数据查询分页的问题,一般情况下都是根据前端传入页数与页码通过mysql的limit方式实现分页,对于数据
  • MySQL之xtrabackup备份恢复的实现

    MySQL之xtrabackup备份恢复的实现
    mysql版本:8.0.28 xtrabackup版本:8.0.28 1、安装xtrabackup 下载地址:Download Percona XtraBackup 8.0https://www.percona.com/downloads 1 2 [root@myoracle ~]# tar -zxvf
  • Mysql的SELECT语句与显示表结构介绍

    Mysql的SELECT语句与显示表结构介绍
    SELECT... 1 2 SELECT 1+1, 2+2;# 直接这样写相当于下面这句 SELECT 1+1, 2+2 FROM DUAL; # 这里DUAL:伪表 SELECT ... FROM 语法: SELECT 标识选择哪些字段(列)
  • MySql如何不插入重复数据
    向数据库的插入值时,需要判断插入是否重复,然后插入。 这种操作怎么提高效率 下面说说一些解决方案 1、insert ignore into 当插入数据时,
  • MYSQL统计逗号分隔字段元素的个数
    写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。 company_id project_id 77 94882,214880,94881,154882,94871,94879 140 2890,2872,3178,4314,
  • MySQL事务的SavePoint简介及操作
    什么是SavePoint SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务, 可以选择将状态回滚到某个小事务发生时的样子,
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计