我有一个带有jsonb列的DB表.
number | data
1 | {"name": "firstName", "city": "toronto", "province": "ON"}
Run Code Online (Sandbox Code Playgroud)
我需要一种更新数据列的方法.所以我的输出应该是这样的:
{"name": "firstName", "city": "ottawa", "province": "ON", "phone": "phonenum", "prefix": "prefixedName"}
Run Code Online (Sandbox Code Playgroud)
用json_set可以吗?我添加了如下查询:
update table_name set data = jsonb_set(data, '{city}', '"ottawa"') where number = 1;
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种方法来添加新的键值(如果它不存在)并更新键值(如果它存在).是否可以在单个查询中实现此目的?
我有这样一张桌子:
id image_id style_id
------------------------
1 45 24
1 45 25
1 47 25
1 45 27
1 45 28
Run Code Online (Sandbox Code Playgroud)
我想拉下image_id列,其中以下三个条件匹配:
style_id = 24
style_id = 25
style_id = 27
Run Code Online (Sandbox Code Playgroud)
我有这样的查询:
SELECT image_id FROM list WHERE (style_id = 24 AND style_id = 25 AND style_id = 27)
Run Code Online (Sandbox Code Playgroud)
这不会让我回头image_id 45.
我一直在stackoverflow上搜索这个答案,但没有找到任何有用的东西.我在my_tbl中有数据:
folder_id | links
--------------+----------------------------------------------------------------
761 | [{"ids": "[82293,82292]", "index": "index_1"}, {"ids": "[82293,82292]", "index": "index_2"}]
769 | [{"ids": "[82323,82324]", "index": "index_3"}]
572 | [{"ids": "[80031,79674,78971]", "index": "index_4"}]
785 | [{"ids": "[82367,82369]", "index": "index_5"}, {"ids": "[82368,82371]", "index": "index_6"}]
768 | [{"ids": "[82292,82306]", "index": "index_7"}]
Run Code Online (Sandbox Code Playgroud)
我想得到链接所有的行 - >>'ids'包含82292.所以在这种情况下,它应该返回我folder_id 761和768.
到目前为止,我实现了通过-jsonb_array_elements(链接) - >>'ids'将链接数组与链接分开
不知道如何进一步.