sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres:elimina el elemento de la matriz jsonb

Asumiendo que falta información:

  • Tu tabla tiene un PK llamado user_id .
  • Desea eliminar todos los elementos con id = 2 en toda la mesa.
  • No quieres tocar otras filas.
  • id es único dentro de cada matriz de 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 siguiente explicación coincide con el alcance de la información proporcionada en la pregunta: