Sql Postgres:在结果集中查找特定行的位置?

Sql Postgres:在结果集中查找特定行的位置?,sql,database,postgresql,pagination,Sql,Database,Postgresql,Pagination,我试图找出如何获取查询中单个项相对于查询返回的所有项的相对位置 例如,获得答案的长期方法是: single_item = SELECT * FROM table WHERE id=65 result = SELECT * FROM table WHERE published_date < date_value x=1 foreach(result as item): if(item.id == single_item.id): required_value = x

我试图找出如何获取查询中单个项相对于查询返回的所有项的相对位置

例如,获得答案的长期方法是:

single_item = SELECT * FROM table WHERE id=65
result = SELECT * FROM table WHERE published_date < date_value
x=1
foreach(result as item):
    if(item.id == single_item.id):
        required_value = x
    endif
    x++
endforeach
single_item=从id=65的表格中选择*
结果=从发布日期<日期值的表格中选择*
x=1
foreach(结果作为项目):
如果(item.id==single_item.id):
所需的_值=x
恩迪夫
x++
endforeach
是否有一种简单的方法可以通过单个postgres查询获取所需的值?

使用:

不使用
语法进行替换:

SELECT s.*
  FROM (SELECT t.*,
               ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
          FROM TABLE t) s
 WHERE s.id = 65
position
列将是一个整数值,表示
id
值为65的记录的位置,以
published\u date
列的升序为基础。如果您希望在出现平局时复制位置值,请将
行号()
替换为
RANK()

SELECT s.*
  FROM (SELECT t.*,
               ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
          FROM TABLE t) s
 WHERE s.id = 65