Использование IF..ELSE в ОБНОВЛЕНИИ (SQL Server 2005 и / или ACCESS 2007) - PullRequest
12 голосов
/ 07 августа 2009

Мне нужно задать запрос, как показано ниже:

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 ]

37 голосов
/ 07 августа 2009

это должно работать

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 на что угодно.

6 голосов
/ 07 августа 2009

Да, вы можете использовать CASE

UPDATE table 
SET columnB = CASE fieldA 
        WHEN columnA=1 THEN 'x' 
        WHEN columnA=2 THEN 'y' 
        ELSE 'z' 
      END 
WHERE columnC = 1
0 голосов
/ 18 июля 2018
UPDATE products 
INNER JOIN zofertas 
    ON products.code=zofertas.codigo 
SET products.price=zofertas.precio 
IF products.price>zofertas.precio  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...