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

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

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

前言

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

說(shuō)明:

@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à)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)的約束限制詳解,數(shù)據(jù)庫(kù)的約束是對(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ù)庫(kù)、表和索引的容量大小的方法

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

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

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

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

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

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

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

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

    解讀mysql datetime類型精確到毫秒、微秒的問(wèn)題

    這篇文章主要介紹了解讀mysql datetime類型精確到毫秒、微秒的問(wèn)題,具有很好的參考價(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查詢語(yǔ)句性能解析

    mysql 使用profiling和explain查詢語(yǔ)句性能解析

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

最新評(píng)論

香港 | 宾阳县| 保靖县| 陇西县| 嘉峪关市| 安岳县| 视频| 绍兴县| 柘城县| 通海县| 湾仔区| 宁国市| 五台县| 永济市| 安新县| 乌兰浩特市| 景德镇市| 彰化市| 察隅县| 山阳县| 临夏市| 菏泽市| 山东省| 南皮县| 屏东市| 汕尾市| 抚宁县| 马尔康县| 农安县| 竹北市| 洛阳市| 繁峙县| 常德市| 白城市| 昭苏县| 渑池县| 沧州市| 宁远县| 达州市| 新巴尔虎右旗| 大渡口区|