Выберите данные как JSONB, где значение используется как ключ json - PullRequest
0 голосов
/ 02 декабря 2018

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"}
}

Ключи объектов 1, 2 и 3 для Json - это значения из столбца ID.

1 Ответ

0 голосов
/ 02 декабря 2018

Используйте функцию агрегирования jsonb_object_agg () :

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

Протестируйте ее в rextester.

...