sql >> Database >  >> RDS >> PostgreSQL

Sleutelwaardepaar verwijderen uit jsonb geneste array in postgresql

stapsgewijze demo: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. Breid de JSON-elementen uit tot elk één rij. Dit genereert twee kolommen:een voor de sleutel en een voor de waarde (de JSON-array)
  2. Breid de JSON-array uit in elk één rij (die het geaggregeerde JSON-object scheidt waaruit u de c wilt verwijderen element)
  3. U kunt de - . gebruiken operator om het element te verwijderen.
  4. Als u het oorspronkelijke JSON-object opnieuw wilt samenvoegen, moet u het achterstevoren groeperen. jsonb_agg() aggregeert de arrays opnieuw
  5. Ten slotte moet je het originele JSON-object opnieuw opbouwen met jsonb_object_agg() met behulp van de eerder gegenereerde sleutelkolom en de nieuwe matrixkolom.



  1. Hoe voer je een opgeslagen procedure uit in Oracle SQL Developer?

  2. mysql - rijen van de ene tabel naar de andere verplaatsen

  3. Niet opslaan bijgewerktAt met vervolgmodel

  4. Databasemail inschakelen in SQL Server (T-SQL)