mysql8mariadb 10 支持rank,快速写个排名,官方的demo。特别简单。

tech2026-09-04  2

目录

前言1,关于rank2,使用3,总结

前言


本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108407930

未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys

1,关于rank


rank 是一个mysql mariadb 的新方法。 https://mariadb.com/kb/en/rank/

2,使用


CREATE TABLE student(course VARCHAR(10), mark int, name varchar(10)); INSERT INTO student VALUES ('Maths', 60, 'Thulile'), ('Maths', 60, 'Pritha'), ('Maths', 70, 'Voitto'), ('Maths', 55, 'Chun'), ('Biology', 60, 'Bilal'), ('Biology', 70, 'Roger'); SELECT course,mark,`name`, ROW_NUMBER() OVER (PARTITION BY course ORDER BY mark DESC) AS rank from student

几个方法 对比 RANK() OVER ,DENSE_RANK() OVER ,ROW_NUMBER() OVER 对比。

SELECT course,mark,`name`, RANK() OVER (PARTITION BY course ORDER BY mark DESC) AS rank, DENSE_RANK() OVER (PARTITION BY course ORDER BY mark DESC) AS dense_rank, ROW_NUMBER() OVER (PARTITION BY course ORDER BY mark DESC) AS row_num from student

3,总结


非常方便的方法,按照科目进行排序。 并且 over 是分区排序的设置字段。 然后返回序号,就是 1 2 3 。 这里有个问题,直接使用 rank 会有重复。有并列的情况。 根据需要设置。

本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108407930

博主地址是:https://blog.csdn.net/freewebsys

最新回复(0)