我的数据库中有两个表。 我想更新从另一个表检索到的一个表中的值,条件是具有不同值的列。
表1
Shape Rate
-------
Round
Heart
Oval
表2
Shape Rate
-------
BR 2100
PS 2500
现在我要更新表2中第1种能力的“费率”值,其中“ Round”表示BR,“ Rest”则表示PS
如何使用这些值将这两个表连接起来?
我正在使用oracle数据库。
答案 0 :(得分:1)
merge
是以下方式之一:
merge into table1 tgt
using table2 src
on (tgt.shape = 'Round' and src.shape = 'BR' or tgt.shape <> 'Round' and src.shape = 'PS')
when matched then update set rate = src.rate
答案 1 :(得分:0)
如果我理解正确,您想在table2
中选择适当的行来更新table1
。
鉴于您的示例数据,您可以使用相关的子查询:
update table1 t1
set rate = (select t2.rate
from table2 t2
where (t2.shape = 'BR' and t1.shape = 'Round') or
(t2.shape = 'PS' and t1.shape <> 'Round')
);
您应该真正修复数据。名为shape
的两列实际上应该包含相同的值。
答案 2 :(得分:0)
试试这个-
UPDATE TABLE_1
SET RATE = (
CASE
WHEN SHAEPE = 'Round' THEN (SELECT RATE FROM TABLE_2 WHERE SHAPE = 'BR')
ELSE (SELECT RATE FROM TABLE_2 WHERE SHAPE = 'PS')
END
)