Ако приемем липсваща информация:
- Вашата таблица има PK, наречен
user_id
. - Искате да премахнете всички елементи с
id = 2
през цялата маса. - Не искате да докосвате други редове.
id
е уникален във всеки масив от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;
Следното обяснение съответства на обема на предоставената информация във въпроса: