首页 > 解决方案 > 选择数据作为 JSONB,其中值用作 json 键

问题描述

100500 次我在这里找到了答案,但不是现在。

我有PostgreSQL 11.1和表

CREATE TABLE public.bots_script_elements (
    id integer,
    icon text,
    CONSTRAINT bots_script_elements_pri PRIMARY KEY (id)
);

价值观

ID  ICON
1   "begin"
2   "form"
3   "calendar"

如何在下面选择数据作为 json?

{
  "1": {"id":1, "icon":"begin"},
  "2": {"id":2, "icon":"form"},
  "3": {"id":3, "icon":"calendar"}
}

Json 对象键 1、2 和 3 是来自 ID 列的值。

标签: jsonpostgresqlaggregate-functionsjsonb

解决方案


使用聚合函数jsonb_object_agg()

select jsonb_object_agg(id, to_jsonb(b))
from bots_script_elements b

在 rextester 中测试它。


推荐阅读