我正在制作排名排行榜。它使用SQL来获取数据。现在我想知道,我怎么能真正让它排名?
例如:
Name:
Wins:
{{ 1}}
Points:
Skills:
Matt
1
2009
2
Mark
4
2014
{{1} }
8
我如何让PHP计算出最顶层的内容并给它排名?所以" Mark"将在第一线,因为他得分最高,并给它排名1.并且"马特"第2行,第2级?
答案 0 :(得分:0)
你可以在MySQL这样做
select t.*,
@rank := @rank + 1 as rank
from your_table t
cross join (select @rank := 0) r
order by points desc
答案 1 :(得分:0)
试试这个:
SELECT name,Wins,Points,Skills,@rn := @rn + 1 as Rank
FROM TableName, (SELECT @rn := 0 ) r
ORDER BY points DESC
结果(使用给定数据):
NAME WINS POINTS SKILLS RANK
Mark 4 2014 8 1
Matt 1 2009 2 2
请参阅SQL Fiddle中的结果。
答案 2 :(得分:0)
你没有提到DBMS,上面提到的mysql技巧不起作用,所以我假设一个DBMS支持OLAP(psql,db2,oracle,mssql等支持它们)
select name,Wins,Points,Skills
from (
SELECT name,Wins,Points,Skills
, rank() over (order by points desc) as rnk
FROM TableName
)
order by rnk