MySQL對(duì)于使用變量完成各種排序的示例代碼區(qū)分
發(fā)表時(shí)間:2023-08-28 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這篇文章主要介紹了MySQL使用變量實(shí)現(xiàn)各種排序,需要的朋友可以參考下核心代碼--下面我演示下MySQL中的排序列的實(shí)現(xiàn)--測(cè)試數(shù)據(jù)CREATE TABLE tb(score INT);INSERT tb SELECT 5 UNION ALL SELECT 4 UNION ALL SELECT 4...
這篇文章主要介紹了
MySQL使用
變量實(shí)現(xiàn)各種排序,需要的朋友可以參考下
核心代碼
--下面我演示下MySQL中的排序列的實(shí)現(xiàn)
--測(cè)試數(shù)據(jù)
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式的排序
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式的排序
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 ;
+-------------+-------+
decnse_rank score
+-------------+-------+
1 5
2 4
2 4
2 4
3 3
4 2
5 1
+-------------+-------+
--3.rank式的排序
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
+------+------+-------+
以上就是MySQL關(guān)于使用變量實(shí)現(xiàn)各種排序的示例代碼分析的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。