Zakładając brakujące informacje:
- Twoja tabela ma plik PK o nazwie
user_id
. - Chcesz usunąć wszystkie elementy z
id = 2
na całym stole. - Nie chcesz dotykać innych rzędów.
id
jest unikalny w każdej tablicychats
.
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;
Poniższe wyjaśnienie odpowiada zakresowi informacji podanych w pytaniu: