加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:15:26 所属栏目:MsSql教程 来源:网络整理
导读:我想知道如何在查询中获取单个项目相对于从查询返回的所有项目的相对位置. 例如,得到答案的长手方式是: single_item = SELECT * FROM table WHERE id=65result = SELECT * FROM table WHERE published_date date_valuex=1foreach(result as item): if(item.i
我想知道如何在查询中获取单个项目相对于从查询返回的所有项目的相对位置.

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

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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读