[英]SQL (mysql) sort table and get row with its position in the sorted table?
[英]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_RT
和DecayTimeDiffRT
返回两个整数值,但这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.