我有一个包含id和text的jsonb
元素(jsonb[]
)数组。要删除一个元素,我可以使用:
UPDATE "Users" SET chats = array_remove(chats, '{"id": 2, "text": "my message"')
但是我想通过id删除消息,因为获取消息将花费我另一个查询。
发布于 2015-05-03 04:07:46
假设缺少信息:
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;
以下解释与问题中提供的资料的范围相符:
https://stackoverflow.com/questions/30005584
复制相似问题