MySQL的另类语法

SQL标准 (SQL-92/99)规定:SELECT 列表里的所有字段,要么出现在 GROUP BY 中,要么被聚合函数(MAX/MIN/COUNT 等)包裹。

select id,max(a1) as a1,a2 from a group by id

这句话在任何非MySQL数据库里执行都是语法错。然而MySQL支持。 a2会随机取一行数据的值。当a2和id绑定都是唯一时,这种写法就很简单,但是当a2有多个值时,这个结果是不确定的,也就是今天执行和明天执行,结果可能不一样。

不知道最初MySQL开放者如何脑洞打开,放开了这个限制。而且很多早期开发人员居然也利用了这个特性,导致现在的MySQL也得支持这个特性。当然引入了ONLY_FULL_GROUP_BY参数来进行控制。

系统设计中有很多这样的案例,为了一点微不足道的灵活性,破坏了规则的完整性。个人不建议这么做。如同所有的非MySQL数据库都严格执行,只有MySQL选择了另类。

相关推荐
DevOpenClub11 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
其实防守也摸鱼11 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
SelectDB11 小时前
统一全文检索与 SQL 分析:Apache Doris 日志分析实践
运维·数据库·掘金技术征文
麻瓜code11 小时前
【MySQL】SQL优化实战:从慢查询定位到查询改写
数据库·sql·mysql
蓝鸟197412 小时前
Oracle HIS业务视图优化实战|VI_BQ_YWTX11从高耗费到秒级响应
数据库·oracle·his数据库调优·复合索引踩坑·is null索引问题·ql视图优化
数智启示录12 小时前
Apache Doris 4.0.8 混合检索实战(第 5 篇):三套系统只返回两条结果,一条 SQL 如何避开交集丢失
大数据·数据库·经验分享·sql·面试
今天AI了吗12 小时前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust
这个DBA有点耶12 小时前
RANGE/LIST/HASH/二级分区怎么选?分区表适用边界与隐藏代价
数据库·mysql·dba
离陌在学C#13 小时前
C# 异步编程:从 async/await 到 Task 实战指南
开发语言·数据库·c#
还是大剑师兰特13 小时前
MySQL8.0 Windows完整安装教程
windows·mysql·大剑师