确定排序表中每一行的排名[重复]
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中每一行的发布请求[重复]