gpt4 book ai didi

arrays - 从没有列名的 Postgres 行构建 JSON

转载 作者:行者123 更新时间:2023-11-29 12:59:49 27 4
gpt4 key购买 nike

我有一个 3 列的 PostgreSQL 9.4.4 tbl,其中 k:TEXT、UNIQUE、v:INT、t:TEXT。

k      v      t
----------------
k1 3 x
k6 5 x
k11 3 y
k3 2 z
k4 2 y
k7 1 x
.. . .

我正在尝试分别自动生成 3 个 JSON 数组:

1. [{"k1":3},{"k6":5},{"k7":1}] (WHERE t=x)
2. [{"k11":3},{"k4":2}] (WHERE t=y)
3. [{"k3":2}] (WHERE t=z)

问题:

  1. 首先,

SELECT JSON_BUILD_OBJECT(k,v) FROM tbl

给我单独的 json 元素 {"k1":3}、{"k6":5} 等。我可以在我的应用程序中构建完整的 json 数组(在 Go 中),但它很笨拙。如何获得完整的 [{"k1":3},{"k6":5},{"k7":1}]?

SELECT array_to_json(array_agg(row_to_json(tx))) FROM (SELECT k,v FROM tbl ) tx;

给我列名,这是我不想要的:[{"k":"k1","v":3},{"k":"k6","v":5} 等。我需要 [{"k1":3},{"k6": 5}等

  1. 另外,

SELECT JSON_BUILD_OBJECT(k,v) FROM tbl WHERE t=x;

错误,所以我无法过滤 t。我不想要 GROUP BY,我想分别生成 3 个不同的 json 数组,在 3 个不同的传递上,具体取决于 WHERE t= 的值。 IOW,我不想要 [{"y":[{"k11":3},{"k4":2}], 等等

我是 Postgres 9.4 中 json ops 的新手,我想在数据库中正确完成 json,而不是在它之外进行字符串操作。我在这里忽略了什么?任何帮助将不胜感激。

最佳答案

with s (k,v,t) as ( values
('k1',3,'x'),
('k6',5,'x'),
('k11',3,'y'),
('k3',2,'z'),
('k4',2,'y'),
('k7',1,'x')
)
select t, array_to_json(array_agg(json_build_object(k,v)))
from s
where t = 'y'
group by t

关于arrays - 从没有列名的 Postgres 行构建 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33543793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com