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

Specific use of Linux man command

01. Command Overview Linux provides a rich help m...

About React Native unable to link to the simulator

React Native can develop iOS and Android native a...

MySQL slow_log table cannot be modified to innodb engine detailed explanation

background Getting the slow query log from mysql....

MySQL GTID comprehensive summary

Table of contents 01 Introduction to GTID 02 How ...

Node.js sends emails based on STMP protocol and EWS protocol

Table of contents 1 Node.js method of sending ema...

How to configure https for nginx in docker

Websites without https support will gradually be ...

Solutions to common problems using Elasticsearch

1. Using it with redis will cause Netty startup c...

MySQL database master-slave replication and read-write separation

Table of contents 1. Master-slave replication Mas...

Mini Program to Implement Calculator Function

This article example shares the specific code of ...

How to set up scheduled backup tasks in Linux centos

Implementation Preparation # Need to back up the ...

CSS3 speeds up and delays transitions

1. Use the speed control function to control the ...

Detailed explanation of CSS sticky positioning position: sticky problem pit

Preface: position:sticky is a new attribute of CS...