分别使用每列的第一个值和特定值更新空值和特定值
Update null and specific value using first value of each column and specific value respectively
我需要将 30 列更新为 test1 null = 33 和 33=55,test2 null = 122 和 122 = 55 等等......如果可能的话最好用第一个值更新id 的第 1 行,这样我就不需要搜索和定义每个值。
示例数据:
id test1 test2
1 33 122
2 1 122
3 NULL 35
4 3 NULL
5 59 170
6 33 122
预期结果:
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
欢迎大家的回答,在此先感谢。
试试这样的东西:
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
如果你马上需要,可以用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
这是一个不错的选择:
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
我需要将 30 列更新为 test1 null = 33 和 33=55,test2 null = 122 和 122 = 55 等等......如果可能的话最好用第一个值更新id 的第 1 行,这样我就不需要搜索和定义每个值。
示例数据:
id test1 test2
1 33 122
2 1 122
3 NULL 35
4 3 NULL
5 59 170
6 33 122
预期结果:
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
欢迎大家的回答,在此先感谢。
试试这样的东西:
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
如果你马上需要,可以用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
这是一个不错的选择:
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