一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術|

服務器之家 - 數(shù)據(jù)庫 - Mysql - MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)實例代碼

MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)實例代碼

2019-06-20 14:48kwin Mysql

這篇文章主要給大家介紹了關于MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧

前言

本文主要介紹了關于MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

表結構:

CREATE TABLE test.testsort (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
uid int(11) DEFAULT 0 COMMENT '用戶id',
 
score decimal(10, 2) DEFAULT 0.00 COMMENT '分數(shù)',
 
PRIMARY KEY (id)
 
)
 
ENGINE = INNODB
 
AUTO_INCREMENT = 1
 
CHARACTER SET utf8
 
COLLATE utf8_general_ci
 
COMMENT = '測試排序'
 
ROW_FORMAT = DYNAMIC;

思路:可以先排序,再對結果進行編號;也可以先查詢結果,再排序編號。

說明:

@rownum := @rownum + 1 中 := 是賦值的作用,這句話的意思是先執(zhí)行@rownum + 1,然后把值賦給@rownum;

(SELECT @rownum := 0) r 這句話的意思是設置rownum字段的初始值為0,即編號從1開始。

實現(xiàn)排名:

方法一:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, (SELECT * FROM testsort ORDER BY score DESC) AS t;

方法二:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, testsort AS t
 
ORDER BY t.score DESC;

結果:

MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)實例代碼

查看指定用戶排名:

方法一:

SELECT b.* FROM
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r,
 
(SELECT * FROM testsort ORDER BY score DESC) AS t
 
) AS b WHERE b.uid = 222;

方法二:

SELECT b.* from
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
FROM (SELECT @rownum := 0) r, testsort AS t
 
ORDER BY t.score DESC
 
) as b where b.uid = 222;

結果:

MYSQL實現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)實例代碼

實現(xiàn)并列排名(相同分數(shù)排名相同):

SELECT
 
obj.uid,
 
obj.score,
 
CASE
 
WHEN @rowtotal = obj.score THEN
 
@rownum
 
WHEN @rowtotal := obj.score THEN
 
@rownum :=@rownum + 1
 
WHEN @rowtotal = 0 THEN
 
@rownum :=@rownum + 1
 
END AS rownum
 
FROM
 
(
 
SELECT
 
uid,
 
score
 
FROM
 
testsort
 
ORDER BY
 
score DESC
 
) AS obj,
 
(SELECT @rownum := 0 ,@rowtotal := NULL) r

查詢指定用戶并列排名:

SELECT total.* FROM
 
(SELECT
 
obj.uid,
 
obj.score,
 
CASE
 
WHEN @rowtotal = obj.score THEN
 
@rownum
 
WHEN @rowtotal := obj.score THEN
 
@rownum :=@rownum + 1
 
WHEN @rowtotal = 0 THEN
 
@rownum :=@rownum + 1
 
END AS rownum
 
FROM
 
(
 
SELECT
 
uid,
 
score
 
FROM
 
testsort
 
ORDER BY
 
score DESC
 
) AS obj,
 
(SELECT @rownum := 0 ,@rowtotal := NULL) r) AS total WHERE total.uid = 222;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: sp啪啪调教打屁股网站 | 日本sss| 亚洲天堂影院 | 欧美日韩精品一区二区三区视频 | 人人人人人看碰人人免费 | 日本一区二区三区精品 | 五月天精品在线 | 秋霞在线一级 | 日本三级成人中文字幕乱码 | 91免费精品国自产拍在线可以看 | 美妇在线 | 99国产精品热久久久久久夜夜嗨 | 四虎永久在线精品波多野结衣 | 日本人在线看片 | 密臀tv| 亚洲国产精品久久无套麻豆 | jizzjizz成熟丰满舒服 | 成人欧美一区在线视频在线观看 | 日本黄a | 猫咪免费人成网站在线观看入口 | 亚洲邪恶天堂影院在线观看 | 波多野结衣不卡 | 人成午夜免费大片在线观看 | 丰满肥臀风间由美357在线 | 爱情岛论坛亚洲品质自拍视频 | 小草观看免费高清视频 | 草莓视频首页 | 韩国三级在线观看 完整版 韩国三级视频网站 | 变态 另类 人妖小说 | zozzozozozo大| 日本一区二区免费在线 | 国精视频一区二区视频 | 金牛网155755水心论坛黄大父母 | 精品国产在天天线在线麻豆 | 无人区乱码1区2区3区网站 | 小舞同人18av黄漫网站 | 国产 日韩欧美 | 国产欧美成人免费观看 | 久久99re2在线视频精品 | 午夜免费无码福利视频麻豆 | 国产成人在线小视频 |