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