小编boo*_*biq的帖子

使用 row_to_json 创建 JSON 时将名称设置为属性

仅对某些列f1, f2, f3...使用row_to_json函数时,是否可以重命名默认名称?

我可以

row_to_json(customers)

回来

{"id_customer":2,"first_name":"bla","last_name":"second_bla"}

但是如果我只想要没有 的名字id_customer,我必须使用

row_to_json(row(first_name, last_name))

然后我得到

{"f1":"bla","f2":"second_bla"}

我想用默认列名或我自己的列名来获得这个结果。我知道我可以创建自己的复合类型并使用

row_to_json(row(first_name, last_name))::my_custom_type

但是在不创建该类型的情况下是否可以在查询中正确执行此操作?

postgresql

32
推荐指数
4
解决办法
3万
查看次数

从表中查找“n”个连续的空闲数字

我有一些这样的数字表(状态是免费的或分配的)

id_set 号码状态         
-----------------------
1 000001 已分配
1 000002 免费
1 000003 已分配
1 000004 免费
1 000005 免费
1 000006 已分配
1 000007 已分配
1 000008 免费
1 000009 免费
1 000010 免费
1 000011 已分配
1 000012 已分配
1 000013 已分配
1 000014 免费
1 000015 已分配

我需要找到“n”个连续数字,因此对于 n = 3,查询将返回

1 000008 免费
1 000009 免费
1 000010 免费

它应该只返回每个 id_set 的第一个可能的组(实际上,它只会为每个查询的 id_set 执行)

我正在检查 WINDOW 函数,尝试了一些类似的查询COUNT(id_number) OVER (PARTITION BY id_set ROWS UNBOUNDED PRECEDING),但这就是我得到的:) 我想不出逻辑,如何在 …

postgresql window-functions group-by gaps-and-islands

19
推荐指数
4
解决办法
3万
查看次数

PostgreSQL 存储过程返回行或空集

我有一个存储过程,RETURNS SETOF ct_custom_type我在里面做

RETURN QUERY EXECUTE 'some dynamic query'
Run Code Online (Sandbox Code Playgroud)

我想这样做:如果这个“动态查询”返回 >= 10 行,我想返回它们,但如果它只返回 < 10 行,我不想返回任何东西(空集ct_custom_type)。

我试过:

RETURN QUERY EXECUTE 'some dynamic query'

GET DIAGNOSTICS variable = ROW_COUNT;
IF variable < 10 THEN

    # I don't know what to do here or how to accomplish this

END IF;
Run Code Online (Sandbox Code Playgroud)

如果我RETURN QUERY SELECT 0, 0, ''::text;IF块中执行(因为ct_custom_type是 的复合类型(integer, integer, text),它只是将这个“空行”添加到先前的查询结果中,但在这种情况下我不想返回任何内容,我可以这样做RETURN;,但它会返回先前的结果,我想丢弃它。

我有这样的:

EXECUTE 'dynamic query';

GET DIAGNOSTICS variable = ROW_COUNT; …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql plpgsql functions

7
推荐指数
2
解决办法
3万
查看次数