PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres:rimuove l'elemento dall'array jsonb

Presupponendo informazioni mancanti:

  • La tua tabella ha un PK chiamato user_id .
  • Vuoi rimuovere tutti gli elementi con id = 2 su tutta la tavola.
  • Non vuoi toccare altre righe.
  • id è unico all'interno di ogni array di chats .

UPDATE "Users" u
SET    chats = array_remove(u.chats, d.chat)
FROM  (
   SELECT user_id, chat
   FROM   "Users", unnest(chats) chat
   WHERE  chat->>'id' = '2'
   ) d
WHERE  d.user_id = u.user_id;

La seguente spiegazione corrisponde alla portata delle informazioni fornite nella domanda: