如何在oracle中将数据从一个表插入另一个表

时间:2015-04-04 20:20:51

标签: sql oracle

我有两个表'Inventory'和'Tendor',其中库存有主键pk_id,我在Inventory时更新了“Inventory.ti_name = Tendor.ki_name”表通过使用以下查询

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的用户进行更新后,我想将其作为“Inventory”表中的新行插入主键pk_id应该更改 这该怎么做?对于pk_id我需要做一些逻辑,比如'SEQ.NEXTVAL FROM DUAL' 任何人都可以建议查询

1 个答案:

答案 0 :(得分:1)

此查询更新匹配表inventorytendor中的行的搜索。当两个表都包含具有相同值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声明中使用序列。