确定排序表中每一行的排名[重复]

Posted

技术标签:

【中文标题】确定排序表中每一行的排名[重复]【英文标题】:Determine the rank of each row in a sorted table [duplicate] 【发布时间】:2012-02-19 04:47:00 【问题描述】:

假设我有这张桌子:

ID Score
1   345
2   5
3   76
4   45
5   85
6   175
7   209

这是我的查询:

SELECT * FROM posts ORDER BY Score DESC

如何获得每一行行的排名/位置?

【问题讨论】:

^但是我将迭代结果(没有 where 语句),而不仅仅是关注单行。 这意味着我没有选择单行,而是选择了所有行。 如果您要用某种语言迭代结果,您肯定可以跟踪那里的排名吗?如果它是短暂的并且仅在您查询时应用,则不需要让数据库提供给您。 在直接查询中如果没有 where 语句是不可能的。如果在 where 子句中没有提及 id 或 score,您将无法获得该特定行的位置。 @JimGarrison,你把我带到了那里!谢谢。 【参考方案1】:

您可以像这样使用上面链接的@OMG Ponies 之类的技术:

SELECT posts.*, @row:=@row+1 as 'rank' FROM posts, (SELECT @row:=0) r ORDER BY posts.Score DESC

【讨论】:

【参考方案2】:

如果您运行以下代码,您将看到新列为Position,与Rank 相同

SELECT ID, Score, 
(SELECT COUNT(distinct u2.Score) FROM myTable u2 
WHERE 
u2.Score > u1.Score) + 1 AS position FROM myTable u1
ORDER BY position

如果您有任何问题,请告诉我...

【讨论】:

以上是关于确定排序表中每一行的排名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

加快pandas DataFrame中每一行的发布请求[重复]

仅获取numpy数组中每一行的特定列[重复]

删除熊猫数据框中每一行的标点符号[重复]

如何在python中每隔几秒在tkinter窗口中更改一行文本[重复]

83 删除排序链表中的重复元素(Easy)

避免在 Django 模板 HTML 表中出现重复的“if 条件”