Как обновить поле Speci c, только если его предыдущее значение не равно нулю, из нескольких полей - PullRequest
0 голосов
/ 25 мая 2020

Я обновляю значения a, b, c, d вместе с условием where, в котором сравнивается идентификатор. Мне нужно обновить поле «b», только если его предыдущее значение не равно нулю. Однако мне нужно обновить оставшиеся поля. В том же запросе.

мой текущий запрос похож на

update demo_table set a='str1', b='str2', c=112, d='str3' where id=191;

может ли кто-нибудь предложить способ достижения этого. Большое спасибо. postgre

1 Ответ

1 голос
/ 25 мая 2020

Вы можете просто добавить условие CASE в предложение SET:

UPDATE demo_table
SET
  a = 'str1',
  b = CASE b IS NOT NULL WHEN true THEN 'str2' ELSE NULL END,
  c = 112,
  d = 'str3'
WHERE id = 191;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...