Unter der Annahme fehlender Informationen:
- Ihre Tabelle hat einen PK namens
user_id
. - Sie möchten alle Elemente mit
id = 2
entfernen über den ganzen Tisch. - Sie möchten keine anderen Zeilen berühren.
id
ist innerhalb jedes Arrays vonchats
eindeutig .
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;
Die folgende Erklärung entspricht dem Umfang der bereitgestellten Informationen in der Frage: