PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Премахнете двойката ключ стойност от jsonb вложен масив в postgresql

демонстрация стъпка по стъпка:db<>fiddle

SELECT
    jsonb_object_agg(key, a)                                -- 5
FROM (
    SELECT
        mydata,
        key,
        jsonb_agg(a_elems.value - 'c') as a                   -- 3/4
    FROM
        mytable,
        jsonb_each(mydata) elems,                             -- 1
        jsonb_array_elements(elems.value) AS a_elems          -- 2
    GROUP BY mydata, key                                      -- 4
) s
GROUP BY mydata                                               -- 5
  1. Разгънете JSON елементите в един ред всеки. Това генерира две колони:една за ключа и една за стойността (JSON масива)
  2. Разширете JSON масива в един ред всеки (който разделя обобщения JSON обект, от който искате да премахнете c елемент)
  3. Можете да използвате - оператор за премахване на елемента.
  4. За да групирате повторно оригиналния JSON обект, трябва да го групирате отзад. jsonb_agg() прегрупира масивите
  5. Накрая трябва да възстановите оригиналния JSON обект с jsonb_object_agg() използвайки предварително генерираната ключова колона и новата колона на масива.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Някой имал ли е успех с използването на конкретен локал за база данни на PostgreSQL, така че сравнението на текст да не прави разлика между главни и малки букви?

  2. Дата във формат mmm yyyy в postgresql

  3. Уебинар:Банкиране на Postgres – Съображения за финансово приложение [Последващи стъпки]

  4. Как да получавам автоматични известия за промени в таблиците?

  5. отделете името на файла от пътя в postgres