我有两张表格如下:
表:“wp_topic”
表:“wp_default_topics”
我要做的是将wp_default_topics(ID除外)中的所有行复制到新表中的wp_topic自动增量(wp_default_topics)。
我可以使用下面的代码来复制一切:
INSERT INTO wp_topic SELECT * FROM wp_default_topics
但我最终会得到错误“#1062 - 关键'PRIMARY'重复输入'28'”
我试过了:
INSERT INTO wp_topic SELECT * FROM wp_default_topics ON DUPLICATE KEY UPDATE ID=VALUES(ID+1)
但最终会收到错误消息:
“#1064 - 您的SQL语法出错;请在第1行检查与您的MariaDB服务器版本对应的手册,以便在'+1'附近使用正确的语法'”
我试过了:
INSERT INTO wp_topic SELECT * FROM wp_default_topics ON DUPLICATE KEY UPDATE LAST_INSERT_ID(wp_topic.ID)
但我最终得到了错误消息:
“#1064 - 您的SQL语法出错;请查看与您的MariaDB服务器版本对应的手册,以便在第1行”(wp_topic.ID)附近使用正确的语法“
我也尝试了下面我认为可以工作,但遗憾的是它没有。
INSERT INTO wp_topic SELECT (user_id, name, subject, company, date) FROM wp_default_topics
“#1241 - 操作数应包含1列”
我已尝试了上述的一些变化,但没有任何运气,我可以得到一个指针,我在这里缺少什么?
谢谢
大卫
答案 0 :(得分:3)
您需要在插入时跳过id
列,因此您必须明确列出所有列,而不是使用SELECT *
INSERT INTO wp_topic (user_id, name, subject, company, date)
SELECT user_id, name, subject, company, date
FROM wp_default_topics
答案 1 :(得分:0)
你不能只从select和insert中删除id字段吗?
INSERT INTO wp_topic (`user_id`, `name`, `subject`, `company`, `date`)
SELECT `user_id`, `name`, `subject`, `company`, `date` FROM wp_default_topics
答案 2 :(得分:0)
编写已经建议的INSERT子选择查询的另一种稍微简单的方法:
INSERT INTO wp_topic
SELECT NULL, user_id, name, subject, company, date FROM wp_default_topics;