2017-02-16 83 views
3

我用更新PostgreSQL表直接從JSON對象

select to_json(host) from host where id=3 

從我的PostgreSQL數據庫中查詢數據的結果是這樣的:

{"id":3,"project_id":1,"name":"a","mac":"abc","info":"x"} 

在我的應用程序更改數據後,我想更新桌子。

有沒有一個「JSON」 - 這樣做?如果不這樣做一個普通的更新一樣

update host set project_id=1, name='a', mac='abc',info='x' where id=1; 
+0

您正在尋找'update'聲明。 –

+0

當然,但我想知道是否有方法直接在'update'語句中使用json – user2071938

+2

是的,這是可能的。但沒有更多細節,這是不可能回答的。請** [編輯] **您的問題,並根據該數據添加一些示例數據和預期輸出。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not當你問一個問題/ 285557#285557) –

回答

4

使用jsonb_populate_recordupdate from clause

update host 
set 
    (project_id, name, mac, info) = 
    (j.project_id, j.name, j.mac, j.info) 
from jsonb_populate_record (null::host, 
    '{"id":1,"project_id":1,"name":"a","mac":"abc","info":"x"}'::jsonb 
) j 
where host.id = j.id