объединить несколько запросов вывода json - PullRequest
0 голосов
/ 07 мая 2018

Запрос 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';

В этих обоих запросах я обновил данные json для важной_основной_проблемы_идентификатора до важного_основного_проблема_идейства и срочного_основного_проблема_идентификатора до уровня_срочного_основания_проблемы соответственно. Есть ли способ объединить оба этих запроса? Я пытался, но поскольку мы используем один и тот же контент, мы не смогли объединить.

1 Ответ

0 голосов
/ 07 мая 2018

Поскольку оба запроса на обновление используют одну и ту же таблицу, их можно объединить в один запрос с предложением 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...