我正在嘗試將資料從幾列移動到單個 JSONB 列。
例如,我有這樣的 x,y,z 列:
id | x | y | z | data
---------------------
1 | 1 | 2 | 3 | NULL
2 | 4 | 5 | 6 | NULL
3 | 7 | 8 | 9 | NULL
我想讓它像這樣:
id | x | y | z | data
---------------------
1 | 1 | 2 | 3 | {"x":1, "y":2, "z": 3}
2 | 4 | 5 | 6 | {"x":4, "y":5, "z": 6}
3 | 7 | 8 | 9 | {"x":7, "y":8, "z": 9}
我嘗試使用 jsonb_set 和 jsonb_insert 失敗。我正在使用 postgresql 14。
uj5u.com熱心網友回復:
您可以將整行轉換為 json 值,然后洗掉該id列
select t.*,
to_jsonb(t) - 'id' as data
from the_table t;
uj5u.com熱心網友回復:
好的,感謝@Edouard,我做了以下查詢:
UPDATE table SET data = jsonb_build_object('x', x, 'y', y, 'z', z);
uj5u.com熱心網友回復:
一個update由@a_horse_with_no_name解決方案的版本:
update the_table set data = to_jsonb(the_table.*) - 'id' - 'data';
與jsonb_build_object除idand之外的任何列數都無需更改即可作業的方法不同data。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384196.html
標籤:PostgreSQL的 jsonb
上一篇:如何僅選擇基于另一列條件的值
下一篇:為每個ID插入缺少的日期行
