1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL實(shí)現(xiàn)排名并查詢指定用戶排名功能

        共 2291字,需瀏覽 5分鐘

         ·

        2021-05-05 04:52

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


        CREATE TABLE test.testsort (
        id int(11NOT NULL AUTO_INCREMENT,
        uid int(11DEFAULT 0 COMMENT '用戶id',
        score decimal(102DEFAULT 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 DESCAS 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 DESCAS 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)從指定用戶uid為111,222,333,444,555 中獲取uid為222的排名


        SELECT b.* FROM
        (
        SELECT t.*, @rownum := @rownum + 1 AS rownum
        FROM (SELECT @rownum := 0) r,
        (SELECT * FROM testsort WHERE uid IN (111,222,333,444,555ORDER BY score DESCAS t
        AS b WHERE b.uid = 222;


        結(jié)果:


        我已經(jīng)更新了我的《10萬(wàn)字Springboot經(jīng)典學(xué)習(xí)筆記》中,點(diǎn)擊下面小卡片,進(jìn)入【Java開發(fā)寶典】,回復(fù):筆記,即可免費(fèi)獲取。

        點(diǎn)贊是最大的支持 

        瀏覽 40
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91视频国产免费 | 开心五月综合激情 | JUX694浅井舞香88Av | 被调教的少妇 | 国产香蕉网 | 色婷婷18禁 | 动漫美女污污 | 日韩一级欧美一级 | 大香蕉网站在线观看 | 三上悠亚久久 |