0

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

   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;
4

1 回答 1

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 )
于 2013-03-01T15:53:15.827 回答