选择数据作为JSONB,其中值用作JSON键

时间:2018-12-02 17:22:42

标签: json postgresql aggregate-functions jsonb

我在这里找到答案的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列中的值。

1 个答案:

答案 0 :(得分:1)

使用聚合函数jsonb_object_agg()

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

Test it in rextester.