将mysql表复制到另一个表(在同一个数据库中)并自动增加插入的行

时间:2017-01-26 23:13:25

标签: php mysql sql

我有两张表格如下:

表:“wp_topic”

enter image description here

表:“wp_default_topics”

enter image description here

我要做的是将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列”

我已尝试了上述的一些变化,但没有任何运气,我可以得到一个指针,我在这里缺少什么?

谢谢

大卫

3 个答案:

答案 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;