如何根据oracle中另一个表中的值更新一个表中的字段

时间:2015-02-20 15:31:08

标签: sql oracle

在Oracle中,我正在尝试根据第二个表中字段的计算更新一个表中的字段,而我似乎无法使用任何语法。

例如,

Update item1 i1, item2 i2
Set i1.min_qty = i2.cases * i2.qty_per_case
Where i1.item_id = i2.item_id
And i1.flag1 = 'Y'

i1.item_idi2.item_id之间的关系是一对一的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要使用相关子查询或合并语句:

update item1 i1
set    i1.min_qty = (select i2.cases * i2.qty_per_case
                     from   item2 i2
                     where  i1.item_id = i2.item_id)
where  i1.flag1 = 'Y';

merge into item1 tgt
using item2 src
  on (tgt.item_id = src.item_id)
when matched then
update set tgt.min_qty = src.cases * src.qty_per_case
where  tgt.flag1 = 'Y';

N.B。未经测试。