我需要更新30列,因为test1 null = 33和33 = 55,test2 null = 122和122 = 55等......如果可能的话,最好用第1行的第一个值更新通过id,我不需要搜索和定义每个值。
的sampleData:
id test1 test2
1 33 122
2 1 122
3 NULL 35
4 3 NULL
5 59 170
6 33 122
ExpectedResult:
id test1 test2
1 55 55
2 1 55
3 33 35
4 3 122
5 59 170
6 55 55
我正在尝试如下,它也没有正确更新
UPDATE #tmpOne
SET test1 = CASE WHEN test1 IS NULL THEN 33 ELSE 55 END,
test2 = CASE WHEN test2 IS NULL THEN 122 ELSE 55 END
欢迎每个人回答并提前致谢。
答案 0 :(得分:1)
如果您需要一次,可以使用CASE
:
UPDATE #tab
SET test1 = CASE WHEN test1=33 THEN 55 WHEN test1 IS NULL THEN 33 ELSE test1 END,
test2 = CASE WHEN test2=122 THEN 55 WHEN test2 IS NULL THEN 122 ELSE test2 END
答案 1 :(得分:1)
这是一个很好的选择:
UPDATE #tmpOne
SET
test1 = CASE ISNULL(test1, '') WHEN '' THEN 33 WHEN 33 THEN 55 ELSE test1 END,
test2 = CASE ISNULL(test2, '') WHEN '' THEN 122 WHEN 122 THEN 55 ELSE test2 END
答案 2 :(得分:0)
尝试类似:
UPDATE table
SET test1 = 55
WHERE test1 = (SELECT test1 FROM table WHERE id = 1)
UPDATE table
SET test1 = (SELECT test1 FROM table WHERE id = 1)
WHERE test1 IS NULL