私はテーブルAを持っています、それは次の方法で列を持っています:
COL1 COL2 COL3 2 1 4 6 10 8
私の要件は、col1 と col2 の最大値を使用して 3 列目に値を挿入することです (col1 > col2 の場合、col1 値として col3 に値を挿入します)。
これを行うオラクルの方法は次のようになります。
UPDATE A SET COL3 = GREATEST(COL1, COL2)
別のアプローチは、 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
COL3 を仮想列として追加することもできます。
ALTER TABLE A ADD COL3 AS ( GREATEST(COL1, COL2) )
これにより、クエリが常に最新の状態になります。更新する必要はありません。
してみてください:
UPDATE YourTable
SET COL3= case when COL1>COL2 then COL1 else COL2 end