我正在尝试使用以下查询:
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;
答案 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 )