首页 > 数据库 >1055 - Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 

1055 - Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 

时间:2024-07-05 15:34:59浏览次数:18  
标签:... nonaggregated NO xxx ZERO mode sql MySQL TABLES

MySQL 8 的默认 sql_mode 包含了only_full_group_by,如果想要sql不按照这模式做检查,可以设置当前session的sql_mode值不包含oly_full_group_by;
全局修改则使用以下sql

-- 全局配置 session级配置则去掉Global
SET GLOBAL sql_mode='ANSI_QUOTES,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
SELECT @@GLOBAL.sql_mode; -- 查看全局设置  
SELECT @@SESSION.sql_mode; -- 查看会话级设置

在 MySQL 中,sql_mode 是一个系统变量,用于定义 MySQL 服务器的 SQL 语法和数据校验的行为。MySQL 支持多种 sql_mode 值,这些值可以单独设置,也可以组合使用。然而,由于 MySQL 的版本更新和功能的增加,sql_mode 的具体值可能会有所变化。以下是一些常见的 sql_mode 值,但请注意这并不是一个完整的列表,因为 MySQL 可能会在未来的版本中引入新的 sql_mode 值。

常见的 sql_mode

  1. STRICT_TRANS_TABLES
    • 启用严格模式,对非事务性存储引擎(如 MyISAM)也应用严格的数据校验。在严格模式下,如果插入或更新的数据不符合列的数据类型或约束条件,MySQL 将拒绝执行并返回错误。
  2. STRICT_ALL_TABLES
    • 类似于 STRICT_TRANS_TABLES,但对所有存储引擎都应用严格的数据校验。
  3. NO_ZERO_IN_DATE
    • 不允许日期和月份部分为 0 的日期值(如 '2023-00-01')。
  4. NO_ZERO_DATE
    • 不允许日期值为 '0000-00-00'。
  5. ALLOW_INVALID_DATES
    • 允许插入无效的日期值(如 '2023-02-30'),但通常不推荐使用此模式,因为它可能会导致数据不一致。
  6. ERROR_FOR_DIVISION_BY_ZERO
    • 在除法运算中,如果除数为零,则产生错误而不是返回 NULL。
  7. NO_AUTO_CREATE_USER
    • 禁止 GRANT 语句自动创建新用户,如果新用户不存在,则 GRANT 语句将失败。请注意,在 MySQL 8.0 中,这个 sql_mode 值可能已经被移除或不再使用。
  8. NO_ENGINE_SUBSTITUTION
    • 如果创建表时指定的存储引擎被禁用或未编译,则拒绝创建表。
  9. PIPES_AS_CONCAT
    • 将 '||' 用作字符串连接操作符,而不是逻辑 OR 操作符。这更符合一些其他数据库系统的行为。
  10. ANSI_QUOTES
    • 将双引号(")视为标识符引用字符,而不是字符串字面量的定界符。这有助于与 ANSI SQL 标准保持一致。
  11. ONLY_FULL_GROUP_BY
    • 启用此模式后,SELECT 列表、HAVING 条件和 ORDER BY 列表中的列必须明确地包含在 GROUP BY 子句中,或者被聚合函数包围。这有助于防止意外的查询结果。

注意

  • 由于 MySQL 的版本更新,某些 sql_mode 值可能已被移除、更名或行为发生变化。

  • 默认情况下,MySQL 8.0 的 sql_mode 可能包括 ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_ENGINE_SUBSTITUTION 等值,但具体值可能因安装和配置而异。

  • 要查看当前 MySQL 服务器的 sql_mode 设置,可以使用 SELECT @@GLOBAL.sql_mode;(查看全局设置)或 SELECT @@SESSION.sql_mode;(查看会话级设置)命令。

  • 修改 sql_mode 可以在 MySQL 的配置文件(如 my.cnfmy.ini)中设置,也可以在 MySQL 会话中动态地设置(使用 SET GLOBALSET SESSION 命令)。但是,请注意,动态修改全局 sql_mode 需要具有足够的权限,并且新设置的值将在新的会话中生效,而不影响当前已存在的会话。
    以下是MySQL中一些常见的 sql_mode值,这些值可以单独使用或组合使用来定义MySQL服务器的SQL语法和数据校验行为:

  • STRICT_TRANS_TABLES

  • STRICT_ALL_TABLES

  • NO_ZERO_IN_DATE

  • NO_ZERO_DATE

  • ALLOW_INVALID_DATES

  • ERROR_FOR_DIVISION_BY_ZERO

  • NO_AUTO_CREATE_USER(注意:在MySQL 8.0中可能已被移除或不再使用)

  • NO_ENGINE_SUBSTITUTION

  • PIPES_AS_CONCAT

  • ANSI_QUOTES

  • IGNORE_SPACE

  • NO_BACKSLASH_ESCAPES

  • NO_UNSIGNED_SUBTRACTION

  • PAD_CHAR_TO_FULL_LENGTH

  • NO_DIR_IN_CREATE

  • REAL_AS_FLOAT

  • ANSI

  • TRADITIONAL

  • ONLY_FULL_GROUP_BY

请注意,这并非一个完整的列表,因为MySQL可能在不同版本中引入新的 sql_mode值或修改现有值的行为。此外,由于MySQL的灵活性和可配置性,某些 sql_mode值可能在不同安装或配置中默认启用或禁用。

标签:...,nonaggregated,NO,xxx,ZERO,mode,sql,MySQL,TABLES
From: https://www.cnblogs.com/monsterbude/p/18285920

相关文章

  • git报错error: failed to push some refs to xxx
    最近在学习git的使用,发现一个本地库同步远程库的问题,先看报错截图:事情经过是,我在自己电脑里创建了一个本地库,在gitee上也创建了一个仓库,我想将我的本地库同步到gitee上的远程,但是却出现了上面的报错。下面是一些前置操作。[email protected]:id7729/git_t......
  • Select xxx for update
    一.Mysql数据库的RR隔离级别下,如果在事务中使用SELECT...FORUPDATE,实现如下伪代码所描述的效果:“begintransactionselectidfromtwherestatus=falselimit1,1;ifselectresultisnotempty;thenupdatestatus=truewhereid=;commit;“那么能......
  • FOODGPT: A LARGE LANGUAGE MODEL IN FOOD TESTING DOMAIN WITH INCREMENTAL PRE-TRAI
    文章目录题目摘要方法题目食品测试的大型语言模型论文地址:https://arxiv.org/abs/2308.10173摘要    目前,特定领域的大型语言模型的构建是通过在基础模型上进行微调来完成的。有些模型还包含知识库,无需预先训练。这是因为基础模型在预训练过程中已经包......
  • 微调qwen-VL报错ValueError: Unrecognized configuration class<xxx>to build an AutoTo
    问题在微调qwen-vl的时候,微调完成之后,模型也保存好了,但是用保存的模型进行推理的时候报错,看样子是找不到分词器tokenizer。报错信息ValueError:Unrecognizedconfigurationclass<class‘transformers_modules.configuration_qwen.QWenConfig’>tobuildanAutoTok......
  • vue 运行npm run serve 出现 Starting development server... ERROR ValidationErro
    解决方式:报错信息不完整,但从给出的部分来看,这个错误与Webpack的进度插件(ProgressPlugin)有关。ValidationError:ProgressPluginInvalid表明进度插件配置无效或者不正确。解决方法:检查Webpack配置文件中是否正确引入并配置了进度插件。确保进度插件的使用方法符合最新版本的......
  • 一个能解决95%定时任务问题的项目,这是什么级别的存在...(领私活源码)
     最近在做项目中涉及到了任务创建和任务运行。结合老大意思,想让我做一个单独的执行器服务。这就有些头疼了。整理起来也比较费事儿!打工人,不能轻易说不!于是就上网划水,突然间XXL-JOB就在我眼前闪过!了解下发现挺适合的。就这样故事开始了...XXL-JOB简介XXL-JOB是一个分......
  • 真太卷了...又开源一款开放API管理工具,支持扩展插件(带私活源码)
     关于API管理工具,相信大家已经都有自己用着顺手的。像国外的Postman,国内有Apifox等等。今天给大家分享的是近期在GitHub比较热门的另一款开放API管理工具:Eoapi。1.Eoapi简介概括来说:这是一款API管理工具,支持扩展插件,简单,开源。Eoapi集合了基础的API管理功能和测试......
  • 【LLM大模型】一本书通关LLM大模型!成功通关大模型,看这本书足够了... (附PDF)
    哈喽大家好!最近有粉丝朋友喊我推荐一些大模型的学习书籍,我给大家推荐这么一本书,基于gbt3、gbt4等transform架构的自然语言处理。这是一本对transform工作原理感兴趣的人必读的书籍。亚马逊的评分是九点七分,内行人在睡不着的时候恨不得把全书都背诵完毕。本书的写作目的是......
  • B站、小红书崩,原因竟然是...它
    B站崩!小红书崩!大家好,我是那个在B站和小红书崩溃时,还在试图刷新页面的技术博主。到底是怎么一回事儿?今天,让我们一起来‘挖掘’这场技术‘灾难’的真相。上午10点左右,微信技术群里突然开始热闹起来。打开一看,B站和小红书,这两个让我们熬夜不睡觉的‘好伙伴’,怎么就突然‘罢工’......
  • C++那些事 研读...
    constthings1.const常量与#define宏定义常量区别const常量编译时期可以进行安全检查,#define宏定义并没有具体的数据类型,只是字符替换罢了,不能安全检查2.const与指针constchar*a;//指向constchar的指针charconst*a;//指向constchar的指针char*consta;//const......