我有一个jsonb
元素数组(jsonb[]
),带有 id 和文本。要删除我可以使用的元素:
UPDATE "Users" SET chats = array_remove(chats, '{"id": 2, "text": "my message"')
但我想仅通过 id 删除消息,因为获取消息将花费我另一个查询。
我有一个jsonb
元素数组(jsonb[]
),带有 id 和文本。要删除我可以使用的元素:
UPDATE "Users" SET chats = array_remove(chats, '{"id": 2, "text": "my message"')
但我想仅通过 id 删除消息,因为获取消息将花费我另一个查询。
假设缺少信息:
user_id
。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;
以下解释与问题中提供的信息的范围相匹配: