2015-04-04 99 views
0

我有兩個表「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_idInventory」表中的新行後,應該改變 如何做到這一點?爲pk_id做我需要做的像一些邏輯「SEQ.NEXTVAL FROM DUAL' 任何人可以提出一個查詢

回答

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語句中使用序列。

+0

讓我檢查一下,如果它有效,它會很棒。我正在使用oracle – peter 2015-04-04 20:40:39

+0

@Dimitry'當匹配然後更新'和'當不匹配然後'是一個oracle查詢? – peter 2015-04-04 20:48:21

+0

是的。它是SQL標準的一部分,它在oracle中實現。更多信息在文檔中:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm – Dmitry 2015-04-04 20:53:12

相關問題