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

目录

  • 前言
  • 1,关于rank
  • 2,使用
  • 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

mysql8 mariadb 10 支持rank,快速写个排名,官方的demo。特别简单。_第1张图片

几个方法 对比 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

mysql8 mariadb 10 支持rank,快速写个排名,官方的demo。特别简单。_第2张图片

3,总结


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

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

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

你可能感兴趣的:(MySQL,mysql)