具有多列的SQL排名

时间:2014-05-11 10:43:16

标签: php sql ranking

我正在制作排名排行榜。它使用SQL来获取数据。现在我想知道,我怎么能真正让它排名?

例如:

  

Name: Wins: {{ 1}} Points:
  Skills: Matt 1 2009
  2 Mark 4 2014 {{1} } 8

我如何让PHP计算出最顶层的内容并给它排名?所以" Mark"将在第一线,因为他得分最高,并给它排名1.并且"马特"第2行,第2级?

3 个答案:

答案 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