最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年10月13日 17:07:03   作者:kwin  
這篇文章主要給大家介紹了關(guān)于MYSQL實(shí)現(xiàn)排名及查詢指定用戶排名功能(并列排名功能)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧

前言

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

表結(jié)構(gòu):

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 '分?jǐn)?shù)',
 
PRIMARY KEY (id)
 
)
 
ENGINE = INNODB
 
AUTO_INCREMENT = 1
 
CHARACTER SET utf8
 
COLLATE utf8_general_ci
 
COMMENT = '測(cè)試排序'
 
ROW_FORMAT = DYNAMIC;

思路:可以先排序,再對(duì)結(jié)果進(jìn)行編號(hào);也可以先查詢結(jié)果,再排序編號(hào)。

說明:

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

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

實(shí)現(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;

結(jié)果:

 

查看指定用戶排名:

方法一:

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;

結(jié)果:

實(shí)現(xiàn)并列排名(相同分?jǐ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;

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • mysql服務(wù)器CPU利用率過高排查過程

    mysql服務(wù)器CPU利用率過高排查過程

    文章介紹了通過監(jiān)控平臺(tái)發(fā)現(xiàn)MySQL服務(wù)器CPU利用率過高的問題,通過排查和分析,找到一條執(zhí)行時(shí)間過長(zhǎng)的SQL語句,并通過EXPLAIN分析和優(yōu)化該SQL,最終解決了CPU利用率過高的問題
    2025-12-12
  • MySQL數(shù)據(jù)庫的約束限制詳解

    MySQL數(shù)據(jù)庫的約束限制詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫的約束限制詳解,數(shù)據(jù)庫的約束是對(duì)表中數(shù)據(jù)進(jìn)行的一種限制,為了保證數(shù)據(jù)的正確性、有效性、完整性,下文簡(jiǎn)單介紹需要的朋友可以參考一下
    2022-08-08
  • MySQL存儲(chǔ)引擎的實(shí)現(xiàn)要素分析

    MySQL存儲(chǔ)引擎的實(shí)現(xiàn)要素分析

    這篇文章主要為大家介紹了MySQL存儲(chǔ)引擎的實(shí)現(xiàn)要素分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • MySQL查看數(shù)據(jù)庫、表和索引的容量大小的方法

    MySQL查看數(shù)據(jù)庫、表和索引的容量大小的方法

    在我們平時(shí)工作中,如果一個(gè)業(yè)務(wù)運(yùn)行很久了,可能會(huì)需要我們?nèi)タ纯催@塊業(yè)務(wù)產(chǎn)生的數(shù)據(jù)量有多大,比如這個(gè)業(yè)務(wù)所使用的數(shù)據(jù)庫存儲(chǔ)空間都使用了多少個(gè)G了,哪一張數(shù)據(jù)表才是大表,下面整理了一些可以拿來即用的SQL以供小伙伴們參考,需要的朋友可以參考下
    2025-09-09
  • MySQL重置密碼終極版(附詳細(xì)步驟)

    MySQL重置密碼終極版(附詳細(xì)步驟)

    mysql是最常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,它是開源的,易于使用和管理,對(duì)于mysql管理員來說,密碼管理是非常重要的,因?yàn)閿?shù)據(jù)庫可能保存著重要的信息,這篇文章主要介紹了MySQL重置密碼終極版的相關(guān)資料,需要的朋友可以參考下
    2025-07-07
  • 利用Mysql定時(shí)+存儲(chǔ)過程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù)的過程

    利用Mysql定時(shí)+存儲(chǔ)過程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù)的過程

    這篇文章主要介紹了利用Mysql定時(shí)+存儲(chǔ)過程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • MySQL?強(qiáng)制使用特定索引的操作

    MySQL?強(qiáng)制使用特定索引的操作

    MySQL可通過FORCEINDEX、USEINDEX等語法強(qiáng)制查詢使用特定索引,但優(yōu)化器可能不采納,需結(jié)合EXPLAIN分析執(zhí)行計(jì)劃,避免性能下降,注意版本差異,建議優(yōu)化索引結(jié)構(gòu)而非強(qiáng)制使用,本文介紹MySQL?強(qiáng)制使用特定索引的操作,感興趣的朋友一起看看吧
    2025-07-07
  • 解讀mysql datetime類型精確到毫秒、微秒的問題

    解讀mysql datetime類型精確到毫秒、微秒的問題

    這篇文章主要介紹了解讀mysql datetime類型精確到毫秒、微秒的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法

    mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法

    這篇文章主要介紹了mysql外鍵(Foreign Key)命令和添加外鍵方法,需要的朋友可以參考下
    2014-02-02
  • mysql 使用profiling和explain查詢語句性能解析

    mysql 使用profiling和explain查詢語句性能解析

    MySQL 查詢 Profile 可以告訴你每個(gè)查詢花費(fèi)了多長(zhǎng)時(shí)間,使用了多少資源,執(zhí)行了哪些操作等,這篇文章主要介紹了mysql 使用profiling和explain查詢語句性能解析,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

黄龙县| 八宿县| 洛阳市| 静宁县| 海丰县| 华宁县| 德令哈市| 星子县| 称多县| 黄大仙区| 高淳县| 隆安县| 九江市| 如皋市| 汪清县| 通州区| 华池县| 弥勒县| 肇庆市| 怀集县| 磐石市| 土默特右旗| 都兰县| 和平县| 凌源市| 和静县| 珠海市| 乌拉特后旗| 河南省| 淳安县| 松桃| 临沂市| 弥渡县| 邢台市| 日照市| 娱乐| 阳江市| 错那县| 于都县| 宁乡县| 绵阳市|