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;
相关推荐
淡定是个好东西5 分钟前
springboot连接高斯数据库(GaussDB)踩坑指南
数据库·gaussdb
追风赶月、7 分钟前
【Redis】哨兵(Sentinel)机制
数据库·redis·sentinel
悟能不能悟22 分钟前
mysql的not exists走索引吗
数据库·mysql
明月与玄武23 分钟前
Jmeter -- JDBC驱动连接数据库超详细指南
数据库·jmeter·配置jdbc连接
专注VB编程开发20年24 分钟前
VB.NET关于接口实现与简化设计的分析,封装其他类
java·前端·数据库
vvilkim29 分钟前
Redis持久化机制详解:保障数据安全的关键策略
数据库·redis·缓存
fengye20716130 分钟前
板凳-------Mysql cookbook学习 (二)
学习·mysql·adb
cooldream200937 分钟前
信息安全的基石:深入理解五大核心安全服务
数据库·安全·系统架构师
朝新_1 小时前
【MySQL】第五弹——表的CRUD进阶(三)聚合查询(上)
mysql
大数据魔法师1 小时前
Redis(三) - 使用Java操作Redis详解
java·数据库·redis