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

12 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' 
Run Code Online (Sandbox Code Playgroud)

等等等等...

我能够使用多个查询来执行此操作,但我想知道,如果我只能在1个语句中执行此操作.

tho*_*mas 38

这应该工作

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
Run Code Online (Sandbox Code Playgroud)

问题是你为什么要这样做......你可能想重新考虑数据模型.你可以null用任何你想要的东西替换.

  • 我在 SQL 2008 中尝试了 2 个额外的“设置”。感谢您的回答 (2认同)

小智 6

是的,你可以使用 CASE

UPDATE table 
SET columnB = CASE fieldA 
        WHEN columnA=1 THEN 'x' 
        WHEN columnA=2 THEN 'y' 
        ELSE 'z' 
      END 
WHERE columnC = 1
Run Code Online (Sandbox Code Playgroud)

  • 谁能告诉这里 fieldA 应该是什么 (2认同)