Можно ли как-то компактнее записать данный SQL-запрос
UPDATE category_client
set def = 0
WHERE NAME = 'testPriceRoundCategory';
UPDATE category_client
set def = 1
WHERE name = 'Розница';
Ответы (2 шт):
Автор решения: Akina
→ Ссылка
Ну можно...
UPDATE category_client
SET def = CASE name WHEN 'testPriceRoundCategory'
THEN 0
WHEN 'Розница'
THEN 1
ELSE name
END;
или
UPDATE category_client
SET def = CASE name WHEN 'testPriceRoundCategory'
THEN 0
WHEN 'Розница'
THEN 1
END
WHERE name IN ('testPriceRoundCategory', 'Розница');
PS. Нафига только...
Автор решения: Ainar-G
→ Ссылка
Так-то вариантов много. @Akina уже написал вам вариант через
CASE, вот вариант через CTE:
WITH new_values(id, n) AS (
VALUES
(1, 200)
, (2, 300)
, (3, 400)
)
UPDATE t
SET n = new_values.n
FROM new_values
WHERE t.id = new_values.id
;