MySQL uses variables to implement various sorting

MySQL uses variables to implement various sorting

Core code

-- Below I will demonstrate the implementation of the sort column in MySQL -- test data CREATE TABLE tb
(
score INT
);
INSERT tb SELECT 
5 UNION ALL SELECT 
4 UNION ALL SELECT 
4 UNION ALL SELECT 
4 UNION ALL SELECT 
3 UNION ALL SELECT 
2 UNION ALL SELECT
1;
--1. row_number sorting SET @row_number =0;
SELECT @row_number := @row_number+1 AS row_number,score 
FROM tb 
ORDER BY score DESC ;
+------------+-------+
| row_number | score |
+------------+-------+
| 1 | 5 |
| 2 | 4 |
| 3 | 4 |
| 4 | 4 |
| 5 | 3 |
| 6 | 2 |
| 7 | 1 |
+------------+-------+
--2. dense_rank sorting SET @dense_rank = 0, @prev_score = NULL;
SELECT @dense_rank :=IF(@prev_score=score,@dense_rank,@dense_rank+1) AS decnse_rank,
  @prev_score := score AS score 
FROM tb 
ORDER BY score DESC ; 
+-------------+-------+
|decns_rank | score |
+-------------+-------+
| 1 | 5 |
| 2 | 4 |
| 2 | 4 |
| 2 | 4 |
| 3 | 3 |
| 4 | 2 |
| 5 | 1 |
+-------------+-------+
--3. Rank sorting SET @row=0,@rank=0,@prev_score=NULL;
SELECT @row:=@row+1 AS ROW,
    @rank:=IF(@prev_score=score,@rank,@row) AS rank,
    @prev_score:=score AS score
FROM tb 
ORDER BY score DESC;
+------+------+-------+
| ROW | rank | score |
+------+------+-------+
| 1 | 1 | 5 |
| 2 | 2 | 4 |
| 3 | 2 | 4 |
| 4 | 2 | 4 |
| 5 | 5 | 3 |
| 6 | 6 | 2 |
| 7 | 7 | 1 |
+------+------+-------+

You may also be interested in:
  • MySQL 8.0.12 installation and environment variable configuration tutorial under win10
  • Detailed explanation of two methods for setting global variables and session variables in MySQL
  • MySQL 5.6.23 Installation and Configuration Environment Variables Tutorial
  • MySQL 8 new features: how to modify persistent global variables
  • Code analysis of user variables in mysql query statements
  • MySQL variable declaration and stored procedure analysis
  • Several important MySQL variables
  • A brief discussion on the difference between declare and set variables in MySQL stored procedures
  • MySQL variable principles and application examples

<<:  vite2.x implements on-demand loading of ant-design-vue@next components

>>:  How to import/save/load/delete images locally in Docker

Recommend

Convert psd cut image to div+css format

PSD to div css web page cutting example Step 1: F...

How to modify the user and group of a file in Linux

In Linux, when a file is created, the owner of th...

How to deploy springcloud project with Docker

Table of contents Docker image download Start mys...

React Hooks Detailed Explanation

Table of contents What are hooks? Class Component...

When the interviewer asked the difference between char and varchar in mysql

Table of contents Difference between char and var...

Analysis of the solution to Nginx Session sharing problem

This article mainly introduces the solution to th...

Some points on using standard HTML codes in web page creation

<br />The most common mistake made by many w...

Detailed explanation of common MySQL operation commands in Linux terminal

Serve: # chkconfig --list List all system service...

NULL and Empty String in Mysql

I recently came into contact with MySQL. Yesterda...

Implementation of check constraints in MySQL 8.0

Hello everyone, I am Tony, a teacher who only tal...

MySQL 8.0.15 installation and configuration method graphic tutorial

This article records the installation and configu...

JS realizes automatic playback of timeline

Recently, I have implemented such an effect: clic...

Detailed explanation of React setState data update mechanism

Table of contents Why use setState Usage of setSt...