需要ON DUPLICATE KEY UPDATE澄清的SQL查询

时间:2013-03-01 15:48:42

标签: sql oracle

我正在尝试使用以下查询:

   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 个答案:

答案 0 :(得分:4)

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 )