正在从PostgreSQL数据库获取ID数组

nvbavucw  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(114)

我正在尝试创建一个数据库视图(或函数),它将允许我获得一个数据库值数组。我正在使用Postgrest来轮询这些视图。
到目前为止,我使用的是:

CREATE VIEW api.value returns  as
select distinct on (value)
    value
from db.table
order by value;

这就完成了检索id的任务,尽管Postgrest将在自己的JSON中弹出每个id,如下所示:

[
    {
        "value":"xyz"
    },
    {
        "value":"zyx"
    }
]

理想情况下,我只需要一个数组,而不是多个json条目,如下所示:

[
    "xyz",
    "zyx"
]

我该怎么做?

goqiplq2

goqiplq21#

如果value列的类型为jsonb,则可以执行以下操作:

CREATE VIEW api.value returns  as
select distinct on (value)
    jsonb_path_query_array(value, '$[*].value')
from db.table
order by value;

如果您的value列是json类型,那么它会稍微复杂一些:

CREATE VIEW api.value returns  as
select distinct on (value)
    jsonb_agg(val->>'value')
from db.table
cross join lateral json_array_elements(value) AS val
group by value
order by value;

相关问题