繁体   English   中英

SQL查询获取排序表中的行数

[英]SQL query get row count in sorted table

我有这个查询:

SET @playerRank = 0;

SELECT *, @playerRank := @playerRank + 1 AS Rank FROM

( SELECT
  P.name AS nome,
  (playerMMR_RT(P.pid) - DecayTimeDiffRT(P.pid)) AS MMR,
  P.pid

FROM
players_rt P

 ) AS TableData

ORDER BY
MMR DESC,
nome ASC

请注意, playerMMR_RTDecayTimeDiffRT返回两个整数值,但这DecayTimeDiffRT 结果是这样的:

在此处输入图片说明

但是我想要这个输出:

在此处输入图片说明


基本上结果是好的,因为行是按MMR排序的。 我希望等级为1、2、3 ...,但似乎也按行排序。

我怎样才能解决这个问题? 我需要对表进行排序,并且排序表中的排名要升至1、2、3...。

尝试通过子查询移动订单

SET @playerRank = 0;

SELECT *, @playerRank := @playerRank + 1 AS Rank 
FROM ( 
  SELECT
  P.name AS nome,
  (playerMMR_RT(P.pid) - DecayTimeDiffRT(P.pid)) AS MMR,
  P.pid
FROM players_rt P
ORDER BY MMR DESC, nome ASC
 ) AS TableData
ORDER BY rank

或尝试在订购的结果上应用排名

SET @playerRank = 0;

SELECT t.*, @playerRank := @playerRank + 1 AS Rank 
from  ( 
  select *
  FROM ( 
    SELECT
    P.name AS nome,
    (playerMMR_RT(P.pid) - DecayTimeDiffRT(P.pid)) AS MMR,
    P.pid
  FROM players_rt P
   ) AS TableData
  ORDER BY MMR DESC, nome ASC
) t 
 order by rank 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM