我有一张马匹表,我在马的个人资料页面上想要显示这匹马的全球排名,我的桌子看起来像这样。
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顺序。
这是原始表格:
答案 0 :(得分:1)
由于MySQL没有像其他RDBMS那样的内置行号函数,因此您必须使用变量来实现此目的:
SELECT @rank:=@rank+1 AS rank, name, runs
FROM horses, (SELECT @rank=0) vars
ORDER BY runs DESC, name
这将按runs
按降序排序,如果是平局,它将按字母顺序按升序排序骑手名称。