【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面试内容整理-系统设计与架构
在大模型和机器学习相关岗位的面试中,系统设计与架构的考察通常会涉及如何设计一个可扩展、可靠且高效的机器学习系统,特别是在面对大规模数据和复杂模型时。这一部分的考察不仅测试候选人对机器学习和深度学习的理解,还会评估其如何设计实际生产环境中的系统来满足需求。以…...
原神帧率解锁工具进程管理实战:解决启动冲突的3个鲜为人知的解决技巧
原神帧率解锁工具进程管理实战:解决启动冲突的3个鲜为人知的解决技巧 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 问题现象:启动失败的常见场景 当你双击原神…...
GLM-4.1V-9B-Base实际作品集:10张典型图片的多角度中文理解结果
GLM-4.1V-9B-Base实际作品集:10张典型图片的多角度中文理解结果 1. 模型能力概览 GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型,专为中文视觉理解任务设计。这个模型最令人印象深刻的地方在于,它能像人类一样"看"图片并回答各…...
3个核心模块提升原神游戏体验的智能辅助工具
3个核心模块提升原神游戏体验的智能辅助工具 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - UI Automation Testing…...
OpenClaw+Phi-3-mini-128k-instruct:自动化代码审查系统
OpenClawPhi-3-mini-128k-instruct:自动化代码审查系统 1. 为什么需要个人级代码审查助手 作为独立开发者,我经常陷入这样的困境:在GitHub上提交PR后,要么苦等同事review,要么自己反复检查代码质量。传统CI工具只能做…...
房屋建筑学-门窗
一、门窗概述门窗的作用——采光、通风、通行(按照国家相应的规范要求,一般居住建筑的起居室、卧室的窗户面积不应小于地板面积的1/7;公建建筑方面,学校为1/5,医院手术室为1/2~1/3,辅助房间为1/12ÿ…...
FPGA/CPLD开发实战:基于Verilog的数字逻辑设计避坑指南
FPGA/CPLD开发实战:基于Verilog的数字逻辑设计避坑指南 1. 从理论到实践的鸿沟:硬件工程师的必经之路 刚接触FPGA/CPLD开发的工程师常常会遇到这样的困惑:明明仿真结果完全正确,但下载到硬件后却出现各种异常。这种理论与实践的差…...
从新手小白到资深开发者:GISBox与QGIS如何适配你的成长路径?
随着地理信息技术的加速演进,工具选型已成为提升空间数据处理效率的关键环节。本文立足于产品定位、功能体系与目标用户三大核心维度,系统梳理GISBox与QGIS的差异化特征,旨在为教育、科研、企业及个人开发者提供清晰、务实的工具决策依据。 …...
7 低配置设备鸿蒙运行流畅度提升技巧 | 鸿蒙开发筑基实战
7 低配置设备鸿蒙运行流畅度提升技巧 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文面向鸿蒙开发者,特别是在低配设备、低内存机型上遇到卡顿、掉帧、加载慢的工程师。提供一套通用、可落地、不求炫技的流畅度提升方…...
工业数智化改造避坑:拒绝通用模板,定制化才是最优解
在工业数智化转型浪潮中,不少企业陷入了“投入与回报失衡”的困境:耗费大量资金、人力上线的数智化系统,却因与自身业务脱节、流程适配性差,难以发挥实际价值,最终沦为“摆设”。事实上,工业数智化改造的核…...
在Linux中编写shell脚本监听指定端口的实现方式
在Linux中,你可以编写一个shell脚本来监听指定端口。以下是几种实现方式:方法1:使用nc(netcat)的简单监听脚本1234567891011121314151617181920212223#!/bin/bash# 文件名:port_listener.sh# 检查参数if [ …...
