sql – Postgres:查找结果集中特定行的位置?

前端之家收集整理的这篇文章主要介绍了sql – Postgres:查找结果集中特定行的位置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何在查询获取单个项目相对于从查询返回的所有项目的相对位置.

例如,得到答案的长手方式是:

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

有没有一个简单的方法来获得require_value只是通过一个单一的postgres查询

解决方法

使用 analytic/ranking/windowing functionality – 8.4 documentation link
WITH summary AS (
   SELECT t.*,ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
     FROM TABLE t)
SELECT s.*
  FROM summary s
 WHERE s.id = 65

替代没有WITH语法:

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

位置列将是一个整数值,表示ID值为65的记录的位置,基于published_date列以升序排列.如果您希望在有关系时重复位置值,请将ROW_NUMBER()替换为RANK()

猜你在找的MsSQL相关文章