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;
相关推荐
2301_81767226几秒前
CSS如何实现优雅的间距_使用CSS Grid控制盒模型间隙
jvm·数据库·python
你说咋整就咋整几秒前
openGauss6.0.3 一主二从集群安装手册
数据库·python·gaussdb
Shorasul几秒前
JavaScript中显式创建包装对象的后果与性能损耗
jvm·数据库·python
吕源林24 分钟前
C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
jvm·数据库·python
数厘32 分钟前
2.21 sql聚合函数的特性与避坑指南(NULL值处理、DISTINCT在聚合函数中的应用)
数据库·sql·oracle
qq_2069013934 分钟前
JavaScript中箭头函数在对象字面量方法中的潜在错误
jvm·数据库·python
Trouvaille ~1 小时前
【MySQL】视图:虚拟表的妙用
数据库·mysql·adb·面试·数据处理·后端开发·视图
Cosolar1 小时前
2026年向量数据库选型指南:Qdrant、Pinecone、Milvus、Weaviate 与 Chroma 深度解析
数据库·面试·llm
m0_747854522 小时前
如何为禁用按钮点击添加提示文案
jvm·数据库·python
谁怕平生太急2 小时前
面试题记录:在线数据迁移
java·数据库·spring