2013-06-23 77 views
1

我孤立我的問題到這個代碼,這是給我的錯誤消息「ORA-00933:SQL命令不能正確地結束」爲上的重複鍵行。SQL命令無法正常結束,在插入/上重複

我想,除非他們有一個重複鍵,在這種情況下,我想,而不是更新它們插入行。類似insert...selecton duplicate key update

我可以看到它必須是一個語法問題,但我通常不使用SQL工作,所以任何幫助表示讚賞。

insert into "tableB" ("col1", "col2") 
select  "tableA"."colX", "tableA"."colY" 
from  "tableA" 
on duplicate key update "tableB"."col1" = "tableA"."colX"; 

回答

2

我會考慮使用MERGE

MERGE INTO tableB b 
USING tableA a 
    ON (b.col1 = a.colX) 
WHEN  MATCHED THEN UPDATE SET b.col2 = a.colY 
WHEN NOT MATCHED THEN INSERT(col1, col2) 
VALUES(a.colX, a.colY); 

注:這是假定這兩個表之間的關鍵是col1和COLX。

+0

MERGE與INSERT ... SELECT有什麼不同?即在做出改變之前有什麼我應該注意的嗎? – stringy

+0

編輯添加:因爲我做了更改,它的工作:) – stringy

+0

@stringy - 它大不相同,因爲Oracle沒有'on key key'語法。 –

相關問題