在UPDATE中使用IF..ELSE(SQL Server 2005和/或ACCESS 2007)

时间:2009-08-06 21:25:55

标签: sql-server-2005

我需要设置如下的查询:

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 个答案:

答案 0 :(得分:37)

这应该有效

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

答案 1 :(得分:6)

是的,您可以使用CASE

UPDATE table 
SET columnB = CASE fieldA 
        WHEN columnA=1 THEN 'x' 
        WHEN columnA=2 THEN 'y' 
        ELSE 'z' 
      END 
WHERE columnC = 1

答案 2 :(得分:0)

UPDATE products 
INNER JOIN zofertas 
    ON products.code=zofertas.codigo 
SET products.price=zofertas.precio 
IF products.price>zofertas.precio