小编Mik*_*x6r的帖子

Oracle Insert via从多个表中选择,其中一个表可能没有行

我有许多代码值表,包含代码和具有Long id的描述.

我现在想要为一个引用了许多代码的帐户类型创建一个条目,所以我有这样的东西:

insert into account_type_standard (account_type_Standard_id,
tax_status_id, recipient_id)
( select account_type_standard_seq.nextval,
ts.tax_status_id, r.recipient_id
from tax_status ts, recipient r
where ts.tax_status_code = ?
and r.recipient_code = ?)
Run Code Online (Sandbox Code Playgroud)

如果找到相应代码的匹配项,则会从tax_status和recipient表中检索适当的值.不幸的是,recipient_code是可以为空的,因此?替换值可以为null.当然,隐式连接不会返回一行,因此一行不会插入到我的表中.

我试过用NVL吗?并在r.recipient_id上.

我试图在r.recipient_code =上强制外连接?通过添加(+),但它不是显式连接,因此Oracle仍然没有添加另一行.

有人知道这样做的方法吗?

我可以明显地修改语句,以便我在外部查找recipient_id,并有一个?而不是r.recipient_id,并且根本不从收件人表中进行选择,但我更愿意在1个SQL语句中完成所有这些操作.

sql oracle select insert

12
推荐指数
2
解决办法
15万
查看次数

标签 统计

insert ×1

oracle ×1

select ×1

sql ×1