我有一个表,我想在其中对其中一列等于我定义的值的行进行排名。
例如,在此表中,我想获取 Col1 = a 的所有行,然后找到 Col3 = Ross 的行的排名(按 Col2 中的分数排名)。
Col1 | Col2 | Col3
------------------
a | 10 | John
a | 6 | Nick
a | 8 | Ross
a | 2 | Tim
a | 4 | Paul
b | 9 | John
b | 3 | Nick
b | 5 | Ross
b | 7 | Tim
b | 1 | Paul
最终我想计算这个:
Col1 | Col2 | Col3 | Rank
-------------------------
a | 10 | John | 1
a | 8 | Ross | 2
a | 6 | Nick | 3
a | 4 | Paul | 4
a | 2 | Tim | 5
并打印结果“2”。
我可以用这个查询对表格进行排序,但是不行;知道如何打印我需要的结果(使用 php)。
$query = "SELECT * FROM exampleTable WHERE Col1 = a order by Col2 DESC";
最佳答案
试试这个:
"SET @rank=0; SELECT * FROM (SELECT *, @rank:=@rank+1 AS Rank FROM exampleTable WHERE Col1 = 'a' order by Col2 DESC) AS t"
这是一个test run这表明它有效。
如果您想要查找 Ross 的排名,您可以在添加 WHERE Col3 = 'Ross'
的情况下运行查询,并且只选择排名列,如所示 here
关于php - mysql数据基本排序及php打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037495/