8

我想以A这样的方式更新表格,如果需要表格列的属性,那么只有它会改变,否则它不会改变..

Update table A set B="abcd" ,C= (case when C="abc" then C="abcd" else C end) where column =1;

手段C应该只在 in 时改变,column=1 and C value is abc 否则C不应该更新..它应该被删除并且只B改变。但是如果C 值匹配,即 abc 给我输出 0 .. 不更改为 abcd

4

2 回答 2

15

THEN部件内部,与值C="abcd"进行比较C,并返回 1 或 0。

整个CASE表达式应该只返回一个值,然后将其写入C列中,因此您只需要'abcd'在这个地方:

UPDATE tableA
SET B = 'abcd',
    C = CASE
        WHEN C = 'abc' THEN 'abcd'
                       ELSE C
        END
WHERE column = 1;
于 2013-06-13T06:57:37.223 回答
0

如果我理解正确,您正在尝试做两件不同的事情:

UPDATE A set B = 'abcd' WHERE column = 1

UPDATE A set C = 'abcd' WHERE C = 'abc' AND column = 1

是对的吗?如果是这样,你能用两个简单的语句而不是一个复杂的语句来做吗?

于 2013-06-13T05:24:39.777 回答