2011-12-26 44 views
3

我正在使用oracle 10g。我試圖合併兩個表。那時我得到了以下錯誤... ora-30926無法在源表中獲得一組穩定的行。使用Oracle10g合併兩個表時出錯?

以下是我的查詢

merge into mt_test_dest t 
using (select distinct d.dest_id dest_id, 
         d.c_id, 
         nvl(tt.destination, tt.destination) destination 
     from my_dest_extra d 
     join mt_test_dest tt 
      on d.c_id = tt.dest_cid 
     join my_dest dml 
      on dml.dest_id = d.dest_id 
     where tt.effectivedate <> to_date('12-12-2999', 'dd-mm-yyyy')) src 
on (t.dest_cid = src.c_id) 
when matched then 
    update set t.dest_id = src.dest_id, t.destination = src.destination; 

有人可以幫助我在這個問題?

+0

你的查詢(')和)')有語法錯誤,你能解決它嗎? – fge 2011-12-26 09:38:40

回答

5

錯誤的最可能原因是您的源查詢包含具有相同C_ID的多行。如果發生這種情況,您有兩行或更多行競爭更新目標表中的相同數據(因爲此列僅用作連接條件)。 Oracle檢測到這一點並引發ORA-30926錯誤。

+0

Thx朋友...我發現,在my_dest_extra表c_id得到了重複...我現在修復它... – 2011-12-26 10:09:50

+0

http://stackoverflow.com/a/8634634/869091 – 2011-12-26 10:11:23

+1

@codo:很好的捕獲,以及很好的問題學習,一分鐘的細節會產生很大的錯誤。 – parmanand 2011-12-26 10:30:28