在SQLite中使用Case更新命令

时间:2013-06-13 05:17:24

标签: sql sqlite sql-update

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

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

表示C只应在column=1 and C value is abc时更改,否则C不应更新..应该删除,只有B更改。但是如果C 值匹配,即abc给我输出0 ..而不是改为abcd

2 个答案:

答案 0 :(得分:6)

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

整个CASE表达式应该返回一个值,然后将其写入C列,因此您只想在此处'abcd':< / p>

UPDATE tableA
SET B = 'abcd',
    C = CASE
        WHEN C = 'abc' THEN 'abcd'
                       ELSE C
        END
WHERE column = 1;

答案 1 :(得分:0)

如果我理解正确,你会尝试做两件事:

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

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

是吗?如果是这样,你能用两个简单的陈述而不是一个复杂的陈述吗?