2013-03-01 19 views
0

我嘗試使用下面的查詢:SQL查詢重複鍵UPDATE澄清需要

INSERT INTO table1(col1, col2, col3) 
    SELECT ss.col1, ss.col2, ss.col3 
    FROM table2 ss 
    ON DUPLICATE KEY UPDATE 
    col1=ss.col1, 
    col2=ss.col2, 
    col3=ss.col3; 

不幸的是我得到的是「SQL查詢無法正常結束」的消息。 在這個例子中語法錯誤?

當我插入

ON DUPLICATE KEY UPDATE 
     col1=ss.col1, 
     col2=ss.col2, 
     col3=ss.col3; 
+1

這synthax不存在? :) – 2013-03-01 15:49:46

+0

我發現這個查詢在stackoverflow,它應該是正確的,但它不適合我。也許我錯過了什麼? – minerals 2013-03-01 15:50:28

+0

「重複鍵更新」僅適用於MySql,oracle DB需要使用merge關鍵字。 – cornergraf 2016-01-08 12:44:14

回答

3

Oracle不支持ON DUPLICATE KEY UPDATE語法錯誤信息彈出的權利。這似乎是特定於MySQL的語法。

最有可能的,你似乎想MERGE聲明

MERGE INTO table1 t1 
    USING (SELECT col1, col2, col3 
      FROM table2) ss 
    ON (t1.col1 = ss.col1) -- whatever the key is 
    WHEN MATCHED THEN 
    UPDATE SET t1.col1 = ss.col1, 
       t1.col2 = ss.col2, 
       t1.col3 = ss.col3 
    WHEN NOT MATCHED THEN 
    INSERT(t1.col1, t1.col2, t1.col3) 
     VALUES(ss.col1, ss.col2, ss.col3) 
+0

哦,我明白了,謝謝 – minerals 2013-03-01 15:54:36