我有一张表A,它有以下方式的列:
COL1 COL2 COL3 2 1 4 6 10 8
我的要求是我要使用col1和col2的最大值插入第3列中的值(如果col1> col2然后将值插入col3作为col1值)
答案 0 :(得分:3)
Oracle的做法是:
UPDATE A SET COL3 = GREATEST(COL1, COL2)
答案 1 :(得分:2)
另一种方法是简单地使用greatest()函数返回的结果更新表的col3
:
update t1
set col3 = greatest(col1, col2);
-- where clause if needed
select *
from t1
结果:
COL1 COL2 COL3
---------- ---------- ----------
2 1 2
4 6 6
10 8 10
答案 2 :(得分:1)
您还可以将COL3添加为虚拟列:
ALTER TABLE A ADD COL3 AS ( GREATEST(COL1, COL2) )
这将使您的查询始终保持最新状态!无需更新。
答案 3 :(得分:0)
请尝试:
UPDATE YourTable
SET COL3= case when COL1>COL2 then COL1 else COL2 end