具有最高性能的最简单方法是,确定包含>的MySQL数据库中Integer值的“等级”。 100.000个条目。
例如,我有一个表“得分”,列“值”
value
50
150
10
200
180
在这种情况下,150的等级将是3,等级200将是1,等级10将是5,依此类推......
声明在php中用什么来确定特定值的“等级”?
答案 0 :(得分:1)
答案 1 :(得分:0)
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 强>
出于性能考虑,您可以运行测试,看看它是否符合您的标准。
答案 2 :(得分:0)
因为我不知道你是否想要行号或排名(包括关系),所以这里有两个使用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()
。