【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7610112.html?templateId=1718516
问题现象
以下SQL在MYSQL下均能执行成功,在崖山下执行报错。
SELECT Sname,Ssex, min(Sage) FROM Student group by Ssex;SELECT Sname,count(0) AS counts FROM Student;selectmin(st.Sage) ,SC.CId,min(st.SId),min(SC.score)from Student st LEFT JOIN SC ON st.SId = SC.SIdgroup by SC.CIdorder by st.Sage;
MYSQL执行成功:
崖山上执行报错:YAS-04316 not a single-group group function
原因
SQL-92 和更早版本不允许选择列表、HAVING条件或ORDER BY列表引用未在GROUP BY子句中命名的非聚合列的查询。例如,此查询在标准 SQL-92 中是非法的,因为name选择列表中的非聚合列未出现在GROUP BY:
SELECT Sname,Ssex, min(Sage) FROM Student group by Ssex;
为了使查询在 SQL-92 中合法,Sname 必须从选择列表中去掉该列,或在 GROUP BY子句中命名该列。
SQL:1999 及更高版本允许这样的非聚合列出现在选择列中。
崖山和ORACLE在这个点都是及SQL-92为准。所以在崖上执行会报错。
解决办法
1、对于非聚合列出现在选择列中,MySQL是任取一行记录,改成用聚合函数来取最小或最大一行。
SELECT min(Sname),Ssex, min(Sage) FROM Student group by Ssex;SELECT max(Sname),count(0) AS counts FROM Student;
2、对于MySQL中group by 加 order by,可拆分2层,里面一层是group by,外面一层是order by
SELECT*from (selectSC.CId,min(st.Sage) as mage,min(st.SId),min(SC.score)from Student st LEFT JOIN SC ON st.SId = SC.SIdgroup by SC.CId)order by mage;
总结
SQL-92 要求非group by 列不能单独出来在选择列中,比SQL:1999允许出现任选一行出现在选择列中,更严谨合理。
任选一行对于应用开发会造成疑惑,Oracle、PostgreSQL、崖山都是以SQL-92为准。MySQL 在5.7 及8.0之后的版本
默认也是以SQL-92为准, SQL_MODE默认设置为ONLY_FULL_GROUP_BY即SQL-92方式。
参考资料:
https://dev.mysql.com/doc/refman/8.4/en/group-by-handling.html
https://dev.mysql.com/doc/refman/8.4/en/group-by-modifiers.html
相关文章:

【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7610112.html?templateId1718516 问题现象 以下SQL在MYSQL下均能执行成功,在崖山下执行报错。 SELECT Sname,Ssex, min(Sage) FROM Student group by Ssex;SELECT Sname,c…...

希迪智驾持续亏损8.2亿:毛利率下滑,冲刺“自动驾驶矿卡第一股”
《港湾商业观察》黄懿 近日,希迪智驾(湖南)股份有限公司(下称“希迪智驾”)向港交所主板递交上市申请,联席保荐人为中金公司、中信建投国际、中国平安资本(香港)。 资料显示&#…...

部署GitLab服务器
文章目录 环境准备GitLab部署GitLab服务器GitLab中主要的概念客户端上传代码到gitlab服务器CI-CD概述软件程序上线流程安装Jenkins服务器 配置jenkins软件版本管理配置jenkins访问gitlab远程仓库下载到子目录部署代码到web服务器自动化部署流程 配置共享服务器配置jenkins把git…...

利用cnocr库完成中文扫描pdf文件的文字识别
很多pdf文件文字识别软件都会收费,免费的网页版可能会带来信息泄露,还有一些类似于腾讯AI和百度AI的接口都有调用次数限制,因此,利用识别正确率极高且免费的cnocr库来自己动手做个pdf文件文字识别程序就是一个很不错的选择。以下程…...
pythonselenium自动化初始配置
基础配置 更新pip: 在Terminal中使用命令‘python -m pip install --upgrade pip’就可以安装pip最新版本。 python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple 常用的镜像源: 清华: https://pypi.tuna.tsinghua.edu.cn/simpl…...

【C++】数的性质问题分析与优化
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目解析与分析题目描述题目分析 💯我的解法与详细解读初始代码实现解法分析 💯老师解法与其改进思路老师代码实现改进与优势 💯对比分析…...
ASP.NET Core WebAPI中使用Jwt实现鉴权授权-System.IdentityModel.Tokens.Jwt
使用 System.IdentityModel.Tokens.Jwt 直接实现基于 JWT 的鉴权和授权,可以在 ASP.NET Core 中手动生成、解析、验证 JWT Token。System.IdentityModel.Tokens.Jwt 提供了 JWT 的生成和解析的 API。以下是如何使用该库实现鉴权授权的详细步骤。 步骤 1: 安装 NuGe…...

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(四)
目录 ARC规则 规则 对象型变量不能作为C语言结构体的成员 显式转换id和void* 属性 数组 ARC规则 规则 在ARC有效的情况下编译源代码必须遵守一定的规则: 主要解释一下最后两条 对象型变量不能作为C语言结构体的成员 要把对象型变量加入到结构体成员中时&a…...

嵌入式软考学习笔记(1)超详细!!!
目录 第一章计算机系统基础知识 1、逻辑运算 2、数的表示 3、总线系统 5、流水线 6、存储器 7、可靠性、校验码 第一章计算机系统基础知识 1、逻辑运算 与:有0则0,全1才1 或:有1则1,全0才0 异或:相同为0…...

【数据分享】2013-2023年我国省市县三级的逐年CO数据(免费获取\excel\shp格式)
空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2023年的省市县三级的逐年PM2.5数据、2000-2023年的省市县三级的逐年PM10数据、2013-2023年的省市县三级的逐年SO2数据、2000-2023年省市县三级的逐年O3数据和2008-2023年我国省市县三级的逐…...

C# 探险之旅:第十六节 - 整数类型:与八位数字精灵的奇幻舞会
嘿,勇敢的探险家们!欢迎再次踏上C#编程的奇幻之旅。今天,我们将进入一个充满魔法与数字的世界——整数类型的王国。想象一下,你站在一个华丽的舞池中,周围是八位身着华丽舞裙(其实是二进制位啦)…...
Cleo文件传输软件存在任意文件读取漏洞(CVE-2024-50623)
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
Java 小抄|解析 JSON 并提取特定层级数据
文章目录 前言环境准备依赖库 示例代码JSON 数据Java 类定义解析 JSON 数据代码解释 结论 前言 在日常开发中,我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据,并通过流式处理提取特定层级的数据。我们将…...

活动报名:Voice Agent 开发者分享会丨RTE Meetup
引入 voice agent 的口语学习应用 Speak 估值已达 10 亿美元 Voice Agent 开发者分享会 一同探索语音驱动的下一代人机交互界面,一场 voice agent builder 的小规模深度交流会。 RTE Meetup 迎来第六期!12 月 15 日(周日)上午&…...

DOA估计算法——ESPRIT算法
1 简介 ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)最早是由Roy等人于1986年提出,是一种广泛应用于高分辨率方向到达(DOA)估计和频率估计的子空间方法。其核心思想基于信号子空间的…...

CEF 数据加密与网络安全
随着网络攻击的日益猖獗,确保应用的安全性已经成为开发者的首要任务。特别是在现代Web应用中,如何确保数据的加密存储、网络通信的安全性以及有效的认证机制成为至关重要的问题。对于基于 Chromium Embedded Framework (CEF) 的应用,开发者必…...
go build command
文章目录 1.简介2.格式3.选项4.示例5.小结参考文献 1.简介 go build 是 Go 语言工具链中的一个命令,它用于编译 Go 源代码并生成可执行文件。 2.格式 go build [-o output] [build flags] [packages]可选的 -o 选项强制 build 将生成的可执行文件或对象写入指定的…...
理解音频采样率和transformer模型:给Python小白的简单解释
理解音频采样率和transformer模型:给Python小白的简单解释 引言什么是采样率?举个例子有趣的现象Python小实验总结 引言 大家好!今天我们来聊一个有趣的话题:音频采样率和AI模型。不要被这些专业术语吓到,我会用最简单…...
【RL Latest Tech】安全强化学习(Safe RL):理论、方法与应用
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
大模型qiming面试内容整理-系统设计与架构
在大模型和机器学习相关岗位的面试中,系统设计与架构的考察通常会涉及如何设计一个可扩展、可靠且高效的机器学习系统,特别是在面对大规模数据和复杂模型时。这一部分的考察不仅测试候选人对机器学习和深度学习的理解,还会评估其如何设计实际生产环境中的系统来满足需求。以…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...