查询1:
UPDATE liaison
SET content = replace( replace( content::varchar, content->>'important_maintenance_problem_id', '{' || (content->>'important_maintenance_problem_id') || '}' ), 'important_maintenance_problem_id', 'important_maintenance_problem_ids' )::JSON
WHERE
content ? 'important_maintenance_problem_id';
查询2:
UPDATE liaison
SET content = replace( replace( content::varchar, content->>'urgent_maintenance_problem_id', '{' || (content->>'urgent_maintenance_problem_id') || '}' ), 'urgent_maintenance_problem_id', 'urgent_maintenance_problem_ids' )::JSON
WHERE
content ? 'urgent_maintenance_problem_id';
在这两个查询中,我分别将important_maintenance_problem_id的json数据更新为important_maintenace_problem_ids,并将urgent_maintenance_problem_id更新为urgent_maintenance_problem_ids。有什么方法可以将这个查询结合起来吗?我试过,但因为我们使用相同的内容因此无法合并。
答案 0 :(得分:0)
由于两个更新查询都使用相同的表,因此可以将它们组合成一个带有CASE END
子句的查询。
UPDATE
liaison
SET content = (
CASE
WHEN content ? 'important_maintenance_problem_id'
THEN replace( replace( content::varchar, content->>'important_maintenance_problem_id', '{' || (content->>'important_maintenance_problem_id') || '}' ), 'important_maintenance_problem_id', 'important_maintenance_problem_ids' )::JSON
WHEN content ? 'urgent_maintenance_problem_id'
THEN replace( replace( content::varchar, content->>'urgent_maintenance_problem_id', '{' || (content->>'urgent_maintenance_problem_id') || '}' ), 'urgent_maintenance_problem_id', 'urgent_maintenance_problem_ids' )::JSON
ELSE
content
END
)
WHERE
content ? 'important_maintenance_problem_id'
OR
content ? 'urgent_maintenance_problem_id'