首页 > 解决方案 > 使用 postgres row_number() 函数选择给定记录 id 的行号

问题描述

对不起,如果我的问题不是新的,但我找不到答案。我想在 postgres 表中查找给定 id 的行号。我有以下Postgres查询

"SELECT row_number() over (ORDER BY id DESC) FROM 
(SELECT id, row_number() over () FROM user ORDER BY id DESC) AS sub 
WHERE id = ?1"

?1 - 用户 ID

对于任何用户 ID,此查询始终返回 1,但我需要它返回实际记录行号。例如,如果我的数据库中有 50 条 id 从 1 到 50 的记录,并且我执行 id = 30 的查询,我想重新调整 row_number = 30。提前致谢。

标签: postgresqlrow-number

解决方案


如果我正确地关注了你,你可以只使用聚合查询:

select count(*) rn
from user
where id <= ?1

这计算有多少记录具有id小于(或等于)给定参数的值。


推荐阅读