我熟悉以下命令的使用:
INSERT INTO mytable
SELECT *
FROM other_table
当表格在布局方面相同时,这种方法很有效。
我想做的是:
INSERT INTO mytable
SELECT *
FROM other_table ON DUPLICATE KEY UPDATE
此操作因语法错误而失败:
MySQL错误:1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第1行的''附近使用正确的语法ON QUERY INSERT INTO mytable SELECT * FROM other_table ON DUPLICATE KEY UPDATE
我找不到任何描述此内容的文档。
答案 0 :(得分:11)
您的陈述不完整:
INSERT INTO mytable
SELECT *
FROM other_table ON DUPLICATE KEY UPDATE
syntax要求您需要通过列出要更新哪些列的值来完成UPDATE
部分。
更新:
这应该适用于您的特定示例:
INSERT INTO mytable2 (id, name, `key`)
SELECT id, name, `key` FROM mytable b
ON DUPLICATE KEY UPDATE name = b.name
变化是:
SELECT
部分中列名称周围的括号。key
,因为“key”是MySQL中的保留字。