我有一个名为'分类器的json专栏'使用这样的数据:
[ { "category": "Building & Trades", "type": "Services"
, "subcategory": "Construction" } ]
我想拉出每个元素并插入标题为同一行的列中,例如' category',' type'和'子类别'。
此查询提取了我想要的内容,在这种情况下'类别':
SELECT parts->'category' AS category
FROM (SELECT json_array_elements(classifiers) AS parts FROM <tablename>) AS more_parts
我无法弄清楚&#39; WHERE&#39;部分在UPDATE / SET / WHERE类型的查询中,例如:
UPDATE <table>
SET category = (SELECT parts->'category' AS category
FROM (SELECT json_array_elements(classifiers) AS parts
FROM <tablename>
) AS more_parts
) WHERE ???
如果没有WHERE
,则会返回多行。
答案 0 :(得分:0)
我想拉出每个元素并插入到相同的列中 例如,标题为&#39; category&#39;,&#39; type&#39;和&#39;子类别&#39;。
听起来你真的想要这个:
UPDATE tbl
SET category = classifiers->0->'category'
,type = classifiers->0->'type'
,subcategory = classifiers->0->'subcategory'
更新所有行。需要Postgres 9.3 +。
->0
尊重数组中唯一的对象(json数组索引从0开始,与Postgres数组不同,默认情况下从1开始)。->'category'
从对象中获取字段。