Использование IF..ELSE в ОБНОВЛЕНИИ (SQL Server 2005 и / или ACCESS 2007)
Мне нужно установить запрос, как показано ниже:
UPDATE XXXXXX
IF column A = 1 then set column B = 'Y'
ELSE IF column A = 2 then set column C = 'Y'
ELSE IF column A = 3 then set column D = 'Y'
и так далее и тому подобное...
Я могу сделать это, используя несколько запросов, но мне было интересно, смогу ли я сделать это всего за 1 оператор вместо этого.
3 ответа
Это должно работать
update table_name
set column_b = case
when column_a = 1 then 'Y'
else null
end,
set column_c = case
when column_a = 2 then 'Y'
else null
end,
set column_d = case
when column_a = 3 then 'Y'
else null
end
where
conditions
вопрос в том, почему вы хотите это сделать... вы можете переосмыслить модель данных. Вы можете заменить null
с тем, что вы хотите.
Да, вы можете использовать CASE
UPDATE table
SET columnB = CASE fieldA
WHEN columnA=1 THEN 'x'
WHEN columnA=2 THEN 'y'
ELSE 'z'
END
WHERE columnC = 1
UPDATE products
INNER JOIN zofertas
ON products.code=zofertas.codigo
SET products.price=zofertas.precio
IF products.price>zofertas.precio