PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres - supprimer un élément du tableau jsonb

En supposant qu'il manque des informations :

  • Votre table a un PK appelé user_id .
  • Vous voulez supprimer tous les éléments avec id = 2 sur toute la table.
  • Vous ne voulez pas toucher d'autres lignes.
  • id est unique dans chaque tableau 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;

L'explication suivante correspond à l'étendue des informations fournies dans la question :