Обновить несколько значений на основе существующих значений - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица some_table:

id | some_integer
---|-------------
 1 |      ?
 2 |      ?
 3 |      ?

Как мне (и можно ли это сделать одним запросом) обновить some_table до:

  • Где id - 1, увеличение some_integer на 1
  • Где id - 2, уменьшение some_integer на 2
  • Где id - 3, увеличениеsome_integer 3

Сделать some_table как:

id | some_integer
---|-------------
 1 |    ? + 1
 2 |    ? - 2
 3 |    ? + 3

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 октября 2019
UPDATE some_table
SET some_integer = some_integer + (CASE id WHEN 1 THEN 1 WHEN 2 THEN -2 WHEN 3 THEN 3 END)
WHERE id IN (1,2,3);
0 голосов
/ 11 октября 2019

Используйте выражение CASE:

UPDATE yourTable
SET some_integer = CASE WHEN id = 1 THEN some_integer + 1
                        WHEN id = 2 THEN some_integer + 2
                        WHEN id = 3 THEN some_integer + 3 END
WHERE id IN (1, 2, 3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...