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;
相关推荐
gma9993 分钟前
MySQL程序
数据库·mysql
神秘的土鸡6 分钟前
Linux中Docker容器构建MariaDB数据库教程
linux·运维·服务器·数据库·docker·mariadb
汪公子4926 分钟前
使用k8s搭建mariadb+nginx+wordpress
数据库·nginx·mariadb
Java__攻城狮11 分钟前
navicat无法连接远程mysql数据库1130报错的解决方法
数据库·mysql
爬山算法19 分钟前
Oracle(129) 如何使用闪回归档(Flashback Archive)?
数据库·oracle
程序员大金44 分钟前
基于SSM+Vue+MySQL的酒店管理系统
前端·vue.js·后端·mysql·spring·tomcat·mybatis
Kk.6161 小时前
SQL编程题复习(24/9/20)
数据库·sql·pta考试·专本贯通
程序员大金1 小时前
基于SpringBoot的旅游管理系统
java·vue.js·spring boot·后端·mysql·spring·旅游
Yz98761 小时前
Hadoop-MapReduce的 原理 | 块和片 | Shuffle 过程 | Combiner
大数据·数据库·数据仓库·hadoop·mapreduce·big data
加油=^_^=1 小时前
MySQL基础篇的补充
数据库·python·mysql