表中的SQL / PHP Rank(行号)

时间:2016-05-13 09:49:24

标签: php mysql

我有一张马匹表,我在马的个人资料页面上想要显示这匹马的全球排名,我的桌子看起来像这样。

id  name       first second third 
282 NewBreed       3      1     0 
278 CueCard        1      1     0 
283 TapTapBoom     1      0     0 
286 Boomboom       0      0     0 
285 Hoe            0      0     0 
284 Boombastic     0      0     0 
287 Haha           0      0     0 
288 Boom           0      0     0 
280 Annie          0      1     0 
279 Boutan         0      1     0 
281 Wahay          0      1     0 
289 42r3etgf       0      0     0 

例如,如果我在马“TapTapBoom”的个人资料中,他的全球排名将是第3位...我如何得到这个数字?在我按“First”排序表后,我猜我需要得到行号。

SELECT *
FROM horses
ORDER BY first
DESC
SELECT row_number
WHERE name = TapTapBoom

所以在我的PHP中,我需要输入马的ID或名称,因此我得到了马的全球排名......排名是他在桌子排序后的位置“第一”在desc顺序。

这是原始表格:

enter image description here

1 个答案:

答案 0 :(得分:1)

由于MySQL没有像其他RDBMS那样的内置行号函数,因此您必须使用变量来实现此目的:

SELECT @rank:=@rank+1 AS rank, name, runs
FROM horses, (SELECT @rank=0) vars 
ORDER BY runs DESC, name

这将按runs按降序排序,如果是平局,它将按字母顺序按升序排序骑手名称。