什么是具有最高性能的最简单方法,以确定包含 > 100.000 个条目的 MySQL 数据库中整数值的“等级”。
例如,我有一个表“分数”,其中有一列“值”
value
50
150
10
200
180
在这种情况下,150 的等级为 3,200 的等级为 1,10 的等级为 5,依此类推……
php 中用来确定特定值的“等级”的语句是什么样的?
什么是具有最高性能的最简单方法,以确定包含 > 100.000 个条目的 MySQL 数据库中整数值的“等级”。
例如,我有一个表“分数”,其中有一列“值”
value
50
150
10
200
180
在这种情况下,150 的等级为 3,200 的等级为 1,10 的等级为 5,依此类推……
php 中用来确定特定值的“等级”的语句是什么样的?
select Value, RankNumber
from (
select Value, @RankNumber:= @RankNumber +1 as RankNumber
from table1, (select @RankNumber:=0) t
order by Value desc
) A
where A.Value = 180
DEMO
对于性能问题,你可以运行一个测试,看看它是否能满足你的要求吧。
因为我不知道您是否想要行号或排名(包括平局),所以这里有两个使用user-defined
变量的选项:
SELECT *
FROM (
SELECT value,
@rn:=@rn+1 RowNumber,
@rank:=if((@value=value),@rank, @rn) rank,
@value:=value
FROM scores
JOIN (SELECT @value:=-1, @rn:=0, @rank:=0) t
ORDER BY value DESC
) t
WHERE value = 150
这反映在其他 RDBMS 中RANK()
。ROW_NUMBER()