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 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;
La siguiente explicación coincide con el alcance de la información proporcionada en la pregunta: