如何使用最大值的第1列和第2列填充表中的第3列

时间:2013-10-17 05:39:59

标签: sql oracle

我有一张表A,它有以下方式的列:

COL1     COL2     COL3
 2        1
 4        6           
 10       8   

我的要求是我要使用col1和col2的最大值插入第3列中的值(如果col1> col2然后将值插入col3作为col1值)

4 个答案:

答案 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