不足している情報を想定する:
- テーブルには
user_id
というPKがあります 。 -
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;
次の説明は、質問で提供された情報の範囲と一致します。