首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >T-SQL:在UPDATE语句中使用CASE根据条件更新某些列

T-SQL:在UPDATE语句中使用CASE根据条件更新某些列
EN

Stack Overflow用户
提问于 2011-01-28 23:51:54
回答 3查看 330.7K关注 0票数 121

我想知道这是否可能。如果条件为真,我希望更新列x,否则将更新列y

代码语言:javascript
复制
UPDATE table SET
     (CASE (CONDITION) WHEN TRUE THEN columnx
                       ELSE columny
      END)
= 25

我找遍了所有地方,尝试了一些东西,但还是找不到解决方案。我认为这是不可能的,但我想我应该在这里问一下,看看以前是否有人这样做过。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-01-28 23:55:22

代码语言:javascript
复制
UPDATE  table
SET     columnx = CASE WHEN condition THEN 25 ELSE columnx END,
        columny = CASE WHEN condition THEN columny ELSE 25 END
票数 26
EN

Stack Overflow用户

发布于 2019-07-01 21:37:09

我知道这是一个非常古老的问题,但这对我很有效:

代码语言:javascript
复制
UPDATE TABLE SET FIELD1 =
CASE 
WHEN FIELD1 = Condition1 THEN 'Result1'
WHEN FIELD1 = Condition2 THEN 'Result2'
WHEN FIELD1 = Condition3 THEN 'Result3'
END;

问候

票数 8
EN

Stack Overflow用户

发布于 2018-12-13 09:19:53

我知道这是一个非常老的问题,这个问题被标记为已修复。但是,如果有人遇到像我这样情况,其中表具有用于更新事件上的数据记录的触发器,那么这将导致问题。这两列都将获得更新,而日志将生成无用的条目。我做的方式

代码语言:javascript
复制
IF (CONDITION) IS TRUE
BEGIN
    UPDATE table SET columnx = 25
END
ELSE
BEGIN
    UPDATE table SET columny = 25
END

现在,这还有另一个好处,那就是它不会像上面的解决方案那样在表上进行不必要的写入。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4830191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档