如何从一个表中插入数据到另一个表在Oracle
问题描述:
我有两个表“Inventory
”和“Tendor
”,其中库存时Inventory.ti_name = Tendor.ki_name
使用下面的查询有主键pk_id
,我更新“Inventory
”表如何从一个表中插入数据到另一个表在Oracle
Update Inventory A set (Used_NAME, ACCOUNT_NUMBER, ti_STATUS)
= (Select B.Using_NAME, B.ACCOUNT_NO, B.ki_STATUS from
Tendor B where A.ti_name = B.ki_name and a.pk_id is not null);
这个查询或任何优化的任何错误?
更新用那些谁是不满足条件Inventory.ti_name = Tendor.ki_name
,我想将它插入与主键pk_id
“Inventory
”表中的新行后,应该改变 如何做到这一点?为pk_id
做我需要做的像一些逻辑“SEQ.NEXTVAL FROM DUAL'
任何人可以提出一个查询
答
此查询更新的搜索匹配表inventory
和tendor
行。当两个表都包含具有相同值ki_name
的行时,它将更新表inventory
中的行。所有的tendor
行,这是不是在inventory
发现,将被插入有:
merge into Inventory a
using Tendor b
on (A.ti_name = B.ki_name)
when matched then update
set a.Used_NAME = B.Using_NAME,
a.ACCOUNT_NUMBER = B.ACCOUNT_NO,
a.ti_STATUS = B.ki_STATUS
when not matched then
insert (pk_id, Used_NAME, ACCOUNT_NUMBER, ti_STATUS)
values (your_seq.nextval, B.Using_NAME, B.ACCOUNT_NO, B.ki_STATUS)
您也可以在insert
语句中使用序列。
让我检查一下,如果它有效,它会很棒。我正在使用oracle – peter 2015-04-04 20:40:39
@Dimitry'当匹配然后更新'和'当不匹配然后'是一个oracle查询? – peter 2015-04-04 20:48:21
是的。它是SQL标准的一部分,它在oracle中实现。更多信息在文档中:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm – Dmitry 2015-04-04 20:53:12