SQL 错误 [1055] [42000]: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggreg

2023-05-16

在使用group by时,报错信息如下:
在这里插入图片描述
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mome.a.type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

mysql5.6中默认的sql_mode是宽松模式,即`NO_ENGINE_SUBSTITUTION`,
mysql5.7中默认的sql_mode是严格模式,即`STRICT_TRANS_TABLES`。

这个问题我出现的原因是mysql版本是5.7.x,5.7版本以上是默认开启了 only_full_group_by 严格模式,此模式下group by 只能获取受到其影响的字段信息,无法和其他未受其影响的字段共存。

首先通过SQL查询全局sql_mode模式:

 select @@global.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_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

在这里插入图片描述
查询显示修改成功,重新连接,再次使用group by,成功查询。
在这里插入图片描述

方式二:
修改mysql配置文件:
sudo vim /etc/my.cnf
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服务,再次使用,查询成功。
在这里插入图片描述

方式三:
通过ANY_VALUE()函数,非分组字段的出现(和关闭 only_full_group_by 模式有相同效果)

select ANY_VALUE(XXX1),XXX2,COUNT(XXX3) from TABLE  GROUP BY XXX2;

在这里插入图片描述

但是个人认为only_full_group_by 模式开启比较好,因为不开启的话,当不加函数时,group bydistanct一样,是去重查询,不够严谨。

所以个人建议使用方式三去避免这个错误,而不是修改sql_mode模式。

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

SQL 错误 [1055] [42000]: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggreg 的相关文章

  • SQL查询;水平到垂直

    我遇到了涉及将水平行转换为垂直行的 SQL 查询 SQL Server 以下是我的数据 No Flag 1 Flag 2 Flag 3 A 1 2 3 B 4 1 6 转换后 该表应为 No FlagsName Flag value A F
  • 将一个巨大的字符串参数传递给存储过程

    我有一个存储过程 它有两个参数 ID 和日期 当我将大文本传递给 ID 参数时 仅考虑部分文本 就好像文本在某个地方被剪切一样 我想这是因为当我执行存储过程时如下 exec proc 1 2 3 4 20100101 一切正常 但是当我使用
  • Oracle - 为什么在存储过程中允许 EXECUTE IMMEDIATE?

    如果存储过程旨在减轻 SQL 注入攻击 为什么在存储过程中允许 EXECUTE IMMEDIATE 以下问题的公认答案将其视为针对此类攻击的一个步骤 什么是存储过程 https stackoverflow com a 459531 3163
  • 如何使用 ODBC 检查数据库是否存在

    各位程序员大家好 我已经在互联网上搜索了几天 但找不到仅使用 ODBC 和 SQL 解决此问题的通用方法 有没有办法查看数据库是否已经存在 仅使用ODBC 它必须是标准 SQL 因为用户可以选择自己选择的 DSN 即他自己的 SQL Ser
  • MySQL 主键是否已经处于某种默认顺序

    我刚刚在一个我刚刚开始使用的系统中偶然发现了几行我并不真正理解的代码 该系统有一个大表 可以保存大量具有唯一 ID 的实体 并在不再需要时将其删除 但绝不会重用它们 所以桌子看起来像这样 id info1 info2 info3 1 foo
  • SQLPLUS 保存到文件

    我必须为我的数据库类使用 SQLPLUS 我们的第一个作业是简单的保存 我按照说明进行操作 我正在使用 PuTTY 访问 sqlplus 在本练习中使用以下 SQL 命令 并尝试使用 SAVE 和 SPOOL 命令将 SQL 命令和输出保存
  • 构建复杂 NSCompoundPredicate 的最佳方法是什么?

    我需要建立一个NSPredicate有很多数据 例如 在 SQL 中我会执行如下操作 SELECT FROM TRANSACTIONS WHERE CATEGORY IN categoryList AND LOCATION IN locat
  • MySQL:错误 1215 (HY000):无法添加外键约束

    我读过了数据库系统概念 第六版 西尔伯沙茨 我将在 OS X 上的 MySQL 上实现第 2 章中所示的大学数据库系统 但我在创建表格时遇到了麻烦course 桌子department好像 mysql gt select from depa
  • 查询 ssisdb 以查找包的名称

    我正在查询 ssis 目录以找出目录中所有包的名称 Folder1项目中只有6个包 但查询却给出了9条记录 1 SELECT P NAME FROM SSISDB internal projects PRJ INNER JOIN SSISD
  • 使用 MOVE 确定 DB RESTORE 的 SQL 数据路径

    我正在尝试编写一个自动恢复数据库备份的脚本 我知道我可以使用以下 RESTORE 命令 RESTORE DATABASE DBRestoredName FROM DISK N C path to backup bak WITH FILE 1
  • 如何从 T-SQL 中的“/”分隔字符串中获取几乎最后一个子字符串?

    如果我有一个由用 字符分隔的其他字符串 xxx xxx xxx xxxx 组成的字符串 如何使用 t sql 获取最后一个和几乎最后一个 最后一个之前的 部分 它可能应该是 charindex 和 right 的某种组合 declare s
  • 根据另一个表中的值查找总计数

    在Mysql中 我的表中有具有重复值的城市 表城市 Name New York USA New York USA Chicago USA Chicago USA Chicago USA Paris France Nice France Mi
  • 如何从 DATE 中提取小时、分钟和秒

    我有以下查询 select cast max bid ts as TIMESTAMP from my table 我投了max bid ts因为这是双打 我想成为TMESTAMP 这个查询返回类似这样的内容 2016 04 21 12 41
  • Postgres 检查文本数组中的约束以确保值的有效性

    我想创建类似的东西 CHECK ALL scopes IN read write delete update scopes这是表中的一个字段text 我想确保该数组中的所有值都是上面的值之一 对此有何意见 是否有可能通过以下方式获取这些值S
  • 如何使用jq通配符

    我有以下 json details car bmw addresses ext 118 21 8 0 29 version 4 addr 89 Psr version 6 addr 56 apT The key ext 118 21 8 0
  • 如何检查一组行中是否至少有一个具有特定值

    我需要找到属于满足特定条件的任何组的所有行 我将组定义为共享 组 列中的值的几行 相关组必须至少包含一行且 Eligible 设置为 true 并且该组中至少有两行在 Group 或 Eligible 以外的任何列中必须彼此不同 示例表 G
  • SQL SERVER 字符串中的掩码字符

    如何替换 SQL SERVER 中字符串中 x 和 y 字符之间的字符 例如 如果我有 TEST123456 最后有 TE 56 我不知道字符串有多长 但我知道我需要屏蔽字符串中 x 和 y 之间的字符 你可以使用REPLICATE htt
  • PostgreSQL 列“foo”不存在

    我有一个表 其中有 20 个整数列和 1 个名为 foo 的文本列 如果我运行查询 SELECT from table name where foo is NULL 我收到错误 ERROR column foo does not exist
  • SQL Server 中的循环行

    我有一个包含 2 列的 SQL Server 表 Code 和 CodeDesc 我想使用 T SQL 循环遍历行并打印 CodeDesc 的每个字符 怎么做 如果您确实想循环遍历行 则需要光标 CURSOR http msdn micro
  • 更新 SQL MS Access 2010

    这已经让我绞尽脑汁了 4 个小时了 我有一个名为 BreakSked 的表 我使用此按钮来使用此 sql 更新表的休息结束时间 strSQL1 UPDATE BreakSked SET BreakSked EndTime Me Text41

随机推荐

  • ubuntu磁盘信息查看命令

    1 命令控制行切入U盘目录中 dev 设备驱动文件 media 此目录下放置可插拔设备 xff0c 比如SD卡 xff0c 或者U盘就是挂载到这个目录中 首先要切换到 dev目录中寻media寻用户找到相关U盘 如上便可切入相应U盘 2 根
  • 【SLAM-建图】Ubuntu18.04安装cartographer记录

    1 更新和安装相关工具 sudo apt span class token operator span get update sudo apt span class token operator span get install span
  • jQuery获取标签属性值(一)

    1 box shadow属性可以设置盒子阴影的效果其参数为 xff1a box shadow h shadow v shadow blur spread color inset h shadow必需的 水平阴影的位置 允许负值v shado
  • 尚硅谷react课程-day04

    目录 1 回调形式的ref 2 回调ref中调用次数问题 3 受控组件 4 非受控组件 1 回调形式的ref 1 利用react提供的ref属性名通过回调函数的属性值去调用节点自身 currentnode 61 gt this input1
  • 尚硅谷react课程-day05

    目录 1 高阶函数 2 组件的生命周期 onChange 61 this saveFormData 39 username 39 这个代码的意思是把saveFormData函数调用后的返回值交给onChange回调 xff0c 不是把sav
  • 快捷式~node.js环境搭建

    1 安装包官网下载 xff1a Node js nodejs org 2 安装完成后修改环境变量 在上面已经完成了 node js 的安装 xff0c 即使不进行此步骤的环境变量配置也不影响node js的使用 但是 xff0c 若不进行环
  • 51单片机LCD1602液晶屏显示方法

    以显示hello world 2022 10 17 为例 首先把LCD1602的模块化程序添加到项目目录中 xff0c 模块化方法在51单片机之程序模块化 学习笔记吧的博客 CSDN博客这里可以学习 实验程序 xff1a include l
  • 深度剖析C语言符号篇

    致前行的人 xff1a 人生像攀登一座山 xff0c 而找寻出路 xff0c 却是一种学习的过程 xff0c 我们应当在这过程中 xff0c 学习稳定冷静 xff0c 学习如何从慌乱中找到生机 目录 1 注释符号 xff1a 2 续接符和转
  • HTML5(入门)

    目录 一 HTML5概念和基本的结构 二 基本标签学习 三 图像标签 四 连接标签 五 列表标签 六 表格标签 table 七 媒体标签 八 网页结构 九 内联框架 iframe 十 表单标签 form 十一 初级验证 一 HTML5概念和
  • Arduino驱动oled

    1 模块介绍 I2C显示屏 xff08 驱动为ssd1306 xff0c 分辨率为128 64 xff09 Arduino nano xff08 Atmega168p xff09 2 模块连接 参考开发板管教定义图可知SCL SDA应该连接
  • 4.3.2、分类编址的 IPv4 地址

    分类编址的 IPv4 地址分为 A B C D E 五类 A 类地址的网络号部分占 8 8 8 比特 xff0c 主机号部分占 24 24 24
  • 解决idea2020版本无法使用actiBPM插件问题

    下载 由于在idea自带的插件商店中搜索不到此插件 xff0c 所以我们需要去官网下载 xff1a 地址 xff1a JetBrains Marketplace 点击下载 xff1a 安装 下载完成之后 xff0c 打开idea的设置 xf
  • 【Ubuntu小工具安装】

    span class token number 1 span 安装谷歌中文拼音输入法 span class token number 2 span 双显示器屏幕设置 和独立显卡显示设置 span class token number 3 s
  • 图像的底层特征、高层特征是什么,语义信息是什么意思

    底层特征指的是 xff1a 轮廓 边缘 颜色 纹理和形状特征 颜色特征 是一种全局特征 描述了图像或图像区域所对应的景物的表面性质 纹理特征 也是一种全局特征 它也描述了图像或图像区域所对应景物的表面性质 形状特征 有两类表示方法 一类是轮
  • 配置与管理samba服务器(Linux)

    实验目的 1 了解samba服务器的功能 2 掌握samba服务器的配置管理 3 掌握samba 客户端程序的使用 4 掌握Windows主机和Linux主机共享文件互访的方法 准备工作 1 物理机 xff08 windows客户端 xff
  • IPV4地址详解

    文章目录 IPV4地址分类编址划分子网无分类编制CIDR路由聚合 应用规划 xff08 子网划分的细节 xff09 定长的子网掩码FLSM变长的子网掩码VLSM IPV4地址 IPV4地址就是给因特网 xff08 Internet xff0
  • 字符串拆分函数strtok实现对字符串的拆分

    前言 xff1a 在本章 xff0c 将介绍如何通过strtok函数来分隔字符串 问 xff1a 现有一段字符串 34 chatgpt 64 wenxin baidu 34 如何才能将 64 去掉打印出剩下的部分呢 xff1f 下面将先介绍
  • python语法糖总结

    python语法糖总结 语法糖 是指在编程语言中一些命令的特殊用法 xff0c 以提升编程速度 xff0c 但不一定降低复杂度 xff0c 还可能增加程序的不可读性 xff0c 但在大部分情况下 xff0c 利大于弊 if 语句 span
  • 互联网职场技术分享的必备技能:VNC 远程桌面演示

    VNC 远程桌面控制 职场必备技能点 初衷引子远程桌面软件被需要言归正传VNCVNC服务端SSH 远程访问协议安装图形管理界面继续安装VNC Server VNC 客户端一些小碎语 初衷 不断涌入高科技开发产业圈的新生代 xff0c 助长了
  • SQL 错误 [1055] [42000]: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggreg

    在使用group by时 xff0c 报错信息如下 xff1a ERROR 1055 42000 Expression 1 of SELECT list is not in GROUP BY clause and contains nona