Mysql 8.0 实现分组后获取组内极值算法 broup by

Mysql 8 中无法用低版本的 二次子查询实现,把数据集升序排列后,再外层做group By分组,取出第一条的方式。

因此引入了一个新函数,自动生成行序列,并且行序列按照指定字段分组后再根据自定字段进行排列原理如下

goupbyfield为分组字段,sortfield为组内需排序的字段

ROW_NUMBER() OVER(PARTITION BY goupbyfield ORDER BY sortfield ASC) rn

最后外层取rn=1的记录,就是最终分组好的结果值

sql 复制代码
SELECT t1.*
FROM (
    SELECT *, ROW_NUMBER() OVER(PARTITION BY groupbyfield ORDER BY sortfield DESC) rn 
    FROM your_table
) t1
WHERE t1.rn = 1;
相关推荐
倔强的石头_10 小时前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横10 小时前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
沉默王二10 小时前
面试官:RAG 不用向量数据库,用 MySQL 硬扛?我:100 万向量不是很轻松?
mysql·面试·ai编程
冬奇Lab1 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
小猿姐1 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
ClouGence1 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
云技纵横1 天前
Gap Lock 死锁实战:5 秒在本地复现 MySQL 间隙锁死锁
后端·mysql
无响应de神1 天前
三、用户与权限管理
数据库·mysql
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql