首页 > 解决方案 > 我们如何对查询检索的元组进行编号?

问题描述

我想给排序的查询输出一个排名。我怎样才能做到这一点?

标签: mysqlsql

解决方案


你没有提到你正在使用哪个数据库,但它们中的大多数都支持窗口函数,比如row_number()让你这样做。

类似于以下内容:

SELECT *, row_number() OVER (ORDER BY foo)
FROM yourtable
ORDER BY foo;

(或rank(),或dense_rank()。它们在排序项中的关系情况下都表现不同)。

或者,当然,您可以为在执行查询的程序中检索到的每一行增加一个计数器。

rn = 0
for each row in results
  rn += 1
  do_something()

推荐阅读