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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 如何仅选择表中的最新条目?
- sqlserver 重新设计数据库表结构
- sql-server – 在Excel中的VBA中从SQL Server捕获错误消息
- sql-server – 数据库表何时变得足够大以至于索引是有益的?
- sql – BigQuery:如何在滚动时间戳窗口内对行进行分组和计
- 安装SQL2005提示 找不到任何SQL2005组件的问题解决方案
- .net – 删除大量行时,DivideByZeroException与SQL Server
- sqlserver2017 重装过程中出现“无法找到数据库引擎启动句柄
- 如何在SQLServer中处理每天四亿三千万记录的
- sql-server – SQL Scheduled job查询,上次运行的持续时间?