PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Usuń parę klucz-wartość z zagnieżdżonej tablicy jsonb w postgresql

demonstracja krok po kroku:db<>skrzypce

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. Rozwiń każdy z elementów JSON o jeden wiersz. To generuje dwie kolumny:jedną dla klucza i jedną dla wartości (tablica JSON)
  2. Rozwiń tablicę JSON o jeden wiersz (co oddziela zagregowany obiekt JSON, z którego chcesz usunąć c element)
  3. Możesz użyć - operatora, aby usunąć element.
  4. Aby ponownie zagregować oryginalny obiekt JSON, musisz go zgrupować wstecz. jsonb_agg() ponownie agreguje tablice
  5. Na koniec musisz odbudować oryginalny obiekt JSON za pomocą jsonb_object_agg() używając poprzednio wygenerowanej kolumny klucza i nowej kolumny tablicy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Agreguj jedną kolumnę w zapytaniu z wieloma kolumnami

  2. Zrób zasięg w postgresie

  3. Czy jest jakiś skrót do korzystania z dblink w Postgresie?

  4. Błąd w dynamicznej instrukcji PL/PGSQL (funkcje i operatory mogą przyjmować co najwyżej jeden zestaw argumentów)

  5. psql:serwer niespodziewanie zamknął połączenie