@The_Last_Dot

Как добавить свойство в каждый элемент массива в postgresql /jsonb при помощи sql?

в таблице postgresql есть колонка формата jsonb:
{
  "items": [
    {"name": "Bob", ...},
    {"name": "Mark", ...},
    ...
  ]
}

как добавить свойство "age" в каждый элемент массива items при помощи sql
спасибо
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
WITH cte AS (
    SELECT 'Bob' AS name, 25 AS age UNION ALL
    SELECT 'Mark'       , 30        UNION ALL
    SELECT 'Joe'        , 35
)
SELECT test.id,
       jsonb_build_object('items', jsonb_agg(jae.value_1 || jsonb_build_object('age', cte.age)))
FROM test
CROSS JOIN jsonb_array_elements(test.value->'items') AS jae (value_1)
LEFT JOIN cte ON cte.name = jae.value_1->>'name'
GROUP BY test.id

DEMO
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы