Giả sử thiếu thông tin:
- Bảng của bạn có PK được gọi là
user_id
. - Bạn muốn xóa tất cả các phần tử có
id = 2
trên toàn bộ bảng. - Bạn không muốn chạm vào các hàng khác.
-
id
là duy nhất trong mỗi mảngchats
.
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;
Giải thích sau phù hợp với mức độ thông tin được cung cấp trong câu hỏi: