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

Usuń obiekty wewnątrz tablic zagnieżdżonych JSONB za pomocą PostgreSQL

Uwaga do edycji:źle zrozumiałem pytanie. Myślałem, że chcesz usunąć cały obiekt zawierający 'RO'. Zmieniłem odpowiedź tak, aby tylko usunąć identyfikator.

W podanym obiekcie jsonb występuje mały błąd. Powinno to wyglądać tak:

{
    "x1": "Americas",
    "x2": "West",
    "x3": [{
        "x_id": "sam"
    }],
    "x4": {
        "a1": true,
        "a2": false,
        "a3": [
            "xx",
            "xx"
        ],
        "a4": [
            "Josh"
        ],
        "y1": [{
                "id": "RW",
                "z2": true,
                "z3": "USER",
                "z4": [{
                    "name": "john"
                }]
            },
             {
                "id": "RO",
                "z2": false,
                "z3": "SELECT",
                "z4": [{
                    "name": "salin"
                }]
            },
            {
                "id": "DBA",
                "z2": false,
                "z3": "SELECT",
                "z4": [{
                    "name": "Samule"
                }]
            }
        ]
    }
}

Mając to na uwadze, powinno to działać, ale pamiętaj - to zastąpi wszystkie wpisy w tabeli roboczej. Obiekty jsonb znajdują się w polu "pole".

with zd as (select ('{x4,y1,'||index-1||',id}')::text[] as path
            from table
            ,jsonb_array_elements((field->>'x4')::jsonb->'y1') 
            with ordinality arr(x,index)
            where x->>'id'='RO'
        )
        update table set field=
        field #- zd.path 
        from zd

Pozdrawiam,
Bjarni




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić dane CSV do bazy PostgreSQL (zdalna baza danych)

  2. PostgreSQL Bigserial &nextval

  3. wyszukaj duplikaty z różnych pól w postgresql

  4. Czy PostgreSQL może wykonać łączenie między dwiema procedurami składowanymi SQL Server?

  5. Jak stworzyć unikalny indeks z warunkowym i podzapytaniem w PostgreSQL?