根据另一个表的值更新Oracle表中的值

时间:2018-06-28 13:20:27

标签: sql oracle

我有两个表,我希望根据另一个表(invn_sbs)的结果更新第一个表(invn_sbs_qty)中的列。

表格和列如下所示

表格:invn_sbs

item_sid  sbs_no  active
--------  ------  ------
   12345       6       0
   23456       6       0

表格:invn_sbs_qty

item sid  sbs_no  store_no  qty 
--------  ------  --------  ---
   12345       6         1    5
   23456       6         10

我希望实现的是更新active = 1表中的invn_sbs 仅当表qty <> 0中的sbs_no = 6store_no = 1invn_sbs_qty时。

因此,运行更新后,只有项12345为active = 1

1 个答案:

答案 0 :(得分:0)

使用以下内容:

ITEM_SID    SBS_NO  ACTIVE
--------    ------  ------
  12345        6      0
  23456        6      0

update invn_sbs s
   set active = ( select sign(count(1))
                    from invn_sbs_qty q
                   where q.item_sid = s.item_sid
                     and qty <> 0 
                     and sbs_no = 6 
                     and store_no = 1);

-- results will become :
select * from invn_sbs;
ITEM_SID    SBS_NO  ACTIVE
--------    ------  ------
  12345        6      1
  23456        6      0