Förutsatt att information saknas:
- Din tabell har en PK som heter
user_id
. - Du vill ta bort alla element med
id = 2
över hela bordet. - Du vill inte trycka på andra rader.
id
är unik inom varje array avchats
.
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;
Följande förklaring matchar omfattningen av tillhandahållen information i frågan: