问题描述
背景:
- 列表项asset_table包含列{asset_tag,asset_id}
- 列表项目合同表具有列{contract_number,contract_id}
- 列表项asset_contract表具有列{contract_id,asset_id}
问题: 我有一个asset_tag以及要添加的合同编号列表和要删除的合同编号列表。
现在我执行以下操作:
解决方法
如果要删除,一个可移植的选项使用exists
delete from asset_contract
where exists (select 1 from asset a where a.asset_id = asset_contract.asset_id and a.asset_tag = ?)
and exists (select 1 from contract c where c.contract_id = asset_contract.contract_id and c.contract_number = ?)
对于insert
,您可以这样做:
insert into asset_contract (contract_id,asset_id)
select c.contract_id,a.asset_id
from asset a
cross join contract c
where a.asset_tag = ? and c.contract_number = ?
问号代表查询的参数(资产标签和合同编号)。