我想通過傳入一組 JSON 物件來一次性在 PostgreSQL 中進行批量更新,但我不確定我應該如何解決這個問題。
一個例子:
[
{ "oldId": 25, "newId": 30 },
{ "oldId": 41, "newId": 53 }
]
當然,應該在單個命令中決議為:
UPDATE table SET id = 30 WHERE id = 25和。UPDATE table SET id = 41 WHERE id = 53
uj5u.com熱心網友回復:
使用jsonb_array_elements()from 子句中的函式:
update my_table
set id = (elem->'newId')::int
from jsonb_array_elements(
'[
{ "oldId": 25, "newId": 30 },
{ "oldId": 41, "newId": 50 }
]') as elem
where id = (elem->'oldId')::int
請注意,如果列id是唯一的(主鍵),則更新可能會導致重復錯誤,具體取決于提供的資料。
Db<>小提琴。
uj5u.com熱心網友回復:
您需要取消嵌套陣列,將元素轉換為正確的資料型別:
update the_table
set id = (x.item ->> 'newId')::int
from jsonb_array_elements('[...]') x(item)
where the_table.id = (x.item ->> 'oldId')::int
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418521.html
標籤:
