Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在更新中使用IF..ELSE(SQL server 2005和/或ACCESS 2007)_Sql Server 2005 - Fatal编程技术网

Sql server 2005 在更新中使用IF..ELSE(SQL server 2005和/或ACCESS 2007)

Sql server 2005 在更新中使用IF..ELSE(SQL server 2005和/或ACCESS 2007),sql-server-2005,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' 诸如此类 我可以使用多个查询来实现这一点,但我想知道,我是否可以用一条语句来实现这一点。这应该行得通 update table_name set column_b = case

我需要设置如下查询:

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' 
诸如此类

我可以使用多个查询来实现这一点,但我想知道,我是否可以用一条语句来实现这一点。

这应该行得通

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

正如我在SQL 2008中尝试的那样,还有两个额外的“集合”。谢谢你的回答有人能告诉我fieldA应该在这里吗