基本上我的表格格式与下表类似。
我想要做的是根据此逻辑更新Col4
例如给出此表:
| Col1 | Col2 | Col3 | Col4 |
-----------------------------
| 1 | 2 | A1 | 2 |
-----------------------------
| 2 | 3 | A2 | 3 |
-----------------------------
| 3 |{null}| A3 |{null}|
将其更新为此表
| Col1 | Col2 | Col3 | Col4 |
-----------------------------
| 1 | 2 | A1 | A2 |
-----------------------------
| 2 | 3 | A2 | A3 |
-----------------------------
| 3 |{null}| A3 | A3 |
任何方向都会非常感谢!
答案 0 :(得分:1)
这样的事情应该有效(未经测试):
UPDATE table
SET col4 = CASE WHEN table.col2 IS NULL THEN table.col3 ELSE col2Matches.col3 END
FROM table
INNER JOIN table AS col2Matches
ON table.col2 = col2Matches.col1
这应该让你测试一下:
SELECT CASE WHEN table.col2 IS NULL THEN table.col3 ELSE col2Matches.col3 END
FROM table
INNER JOIN table AS col2Matches
ON table.col2 = col2Matches.col1
希望这有帮助,
皮特
答案 1 :(得分:0)
这样的事情可能会在Oracle中发挥作用。
update myTable
set col4 = case when col2 is null then col3
else (select col3 from myTable where col1 = col2)
end;
当然,如果select col3 from myTable where col1 = col2
返回多行,则此查询将无效。但我想你已经知道你的数据是否足够干净以便它可以工作。