鉴于结果只有一个数字,我有一个很好用的查询,但现在我需要允许返回多行并且查询无法处理,因为它使用用户定义变量......这是原始过程
CREATE DEFINER=`root`@`%` PROCEDURE `MapRank`(pTankID bigint,pMapID int, pColor int(2))
BEGIN
SET @RankNumber:=0;
select RankNumber
from
(select
TankID,
@RankNumber:=@RankNumber+1 as RankNumber,
MapID,
Color
from MAPDATA WHERE MapID = pMapID order by Rank DESC, TotalPP DESC) Query1 where TankID = pTankID AND COLOR = pColor ;
END
这将返回一个数字,本质上是计算它的记录数,给我“行”位置。
现在我需要更改它以给我所有行,而不是 mapid 和 color 的位置,这样我就可以看到所有 mapid/color 组合的所有等级
这是我目前无法使用的
SET @RankNumber:=0;
select
RankNumber,MapID,COlor
from
(select
TankID,
@RankNumber:=@RankNumber + 1 as RankNumber,
MapID,
Color
from
MAPDATA
order by TotalPP DESC) Query1
where
TankID = 18209 ORDER BY RankNumber
产生的查询结果如下所示:
1062 3 1
3544 3 0
6717 17 1
6752 17 3
7453 3 2
7860 17 0
7984 17 2
9220 3 3
如果我手动运行,可以说,地图 id 3 和颜色 3 表示排名号是 9220,第一个查询我得到这个
6022
我需要能够通过多个 MySQL 连接来完成此操作,因此最好在不使用临时变量的情况下完成,因为它可能会有另一个人进来并使用它......任何帮助都会很棒。