ID とテキストをjsonb
含む要素の配列( ) があります。jsonb[]
私が使用できる要素を削除するには:
UPDATE "Users" SET chats = array_remove(chats, '{"id": 2, "text": "my message"')
しかし、IDだけでメッセージを削除したいのですが、メッセージを取得すると別のクエリが必要になります。
ID とテキストをjsonb
含む要素の配列( ) があります。jsonb[]
私が使用できる要素を削除するには:
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;
次の説明は、質問で提供された情報の範囲と一致します。