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 dechats
.
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 :