我有两个表,我希望根据另一个表(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 = 6
和store_no = 1
和invn_sbs_qty
时。
因此,运行更新后,只有项12345为active = 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