Sql 使用JSON列的一部分更新新列
我有一个名为“分类器”的json专栏,其中包含如下数据:Sql 使用JSON列的一部分更新新列,sql,json,postgresql,sql-update,Sql,Json,Postgresql,Sql Update,我有一个名为“分类器”的json专栏,其中包含如下数据: [ { "category": "Building & Trades", "type": "Services" , "subcategory": "Construction" } ] 我想将每个元素拉入同一行的列中,例如,“category”、“type”和“subcategory” 此查询提取出我想要的内容,在本例中为“类别”: SELECT parts->'category' AS category FROM (S
[ { "category": "Building & Trades", "type": "Services"
, "subcategory": "Construction" } ]
我想将每个元素拉入同一行的列中,例如,“category”、“type”和“subcategory”
此查询提取出我想要的内容,在本例中为“类别”:
SELECT parts->'category' AS category
FROM (SELECT json_array_elements(classifiers) AS parts FROM <tablename>) AS more_parts
我无法确定更新/设置/位置查询类型中的“位置”部分,例如:
UPDATE <table>
SET category = (SELECT parts->'category' AS category
FROM (SELECT json_array_elements(classifiers) AS parts
FROM <tablename>
) AS more_parts
) WHERE ???
没有返回多行的位置
我想将每个元素拉入同一行中的列中
标题为“类别”、“类型”和“子类别”的行
听起来你真的想要这个:
UPDATE tbl
SET category = classifiers->0->'category'
,type = classifiers->0->'type'
,subcategory = classifiers->0->'subcategory'
更新所有行。要求博士后9.3以上
第一个操作符->0尊重数组json数组索引中从0开始的唯一对象,不同于Postgres数组,后者默认从1开始。
第二个操作符->'category'从对象获取字段。
你的博士后版本?json_数组_元素返回一组值。你必须以某种方式定义选择哪一个。如果只有一个函数/运算符,请使用其他函数/运算符。Postgres 9.3。谢谢你的回答。