小编Ste*_*tew的帖子

在 Postgresql 查询中有效地选择多个连续范围的开始和结束

我在一个表中有大约 10 亿行数据,其中有一个名称和一个 1-288 范围内的整数。对于给定的name,每个int都是唯一的,并且并非该范围内的每个可能的整数都存在——因此存在间隙。

此查询生成一个示例案例:

--what I have:
SELECT *
FROM ( VALUES ('foo', 2),
              ('foo', 3),
              ('foo', 4),
              ('foo', 10),
              ('foo', 11),
              ('foo', 13),
              ('bar', 1),
              ('bar', 2),
              ('bar', 3)
     ) AS baz ("name", "int")
Run Code Online (Sandbox Code Playgroud)

我想为每个名称和连续整数序列生成一个查找表。每个这样的行将包含:

name -- name列的值
start -- 连续序列中的第一个整数
end --连续序列中的最后一个值
span -- end - start + 1

此查询为上述示例生成示例输出:

--what I need:
SELECT * 
FROM ( VALUES ('foo', 2, 4, 3),
              ('foo', 10, 11, 2),
              ('foo', 13, 13, 1),
              ('bar', …
Run Code Online (Sandbox Code Playgroud)

postgresql query

20
推荐指数
3
解决办法
1万
查看次数

Postgres:修改现有的search_path(保留当前值)

有时我想扩展现有的搜索路径,而不是替换它,比如:

首先说它已经设置如下:

SET search_path TO schema_b, schema_c, public;
Run Code Online (Sandbox Code Playgroud)

我想将我的架构添加到行的前面:

SET search_path TO schema_a + search_path;   --doesn't work
Run Code Online (Sandbox Code Playgroud)

我的想法类似于我在 BASH 中所做的:

PATH=path_a:$PATH
Run Code Online (Sandbox Code Playgroud)

额外的问题,可能是相关的:有没有办法可以暂时存储当前路径,以便我可以将其更改为完全不同的内容,然后无需知道它是什么就可以恢复它?

schema postgresql

6
推荐指数
1
解决办法
4389
查看次数

标签 统计

postgresql ×2

query ×1

schema ×1