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

ON DUPLICATE KEY UPDATEOracleは構文をサポートしていません。これは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 に答える