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

Php 将mysql表复制到另一个表(在同一数据库中)并自动递增插入的行,php,mysql,sql,Php,Mysql,Sql,我有以下两个表格: 表:wp_主题 表:wp_默认主题 我试图做的是从wp_default_topics表中复制wp_default_topics表中的所有行,除了ID到wp_topic自动增量之外 我可以使用以下代码复制所有内容: INSERT INTO wp_topic SELECT * FROM wp_default_topics 但我最终会遇到错误1062-键“PRIMARY”的重复条目“28” 我试过: INSERT INTO wp_topic SELECT * FROM wp_d

我有以下两个表格:

表:wp_主题

表:wp_默认主题

我试图做的是从wp_default_topics表中复制wp_default_topics表中的所有行,除了ID到wp_topic自动增量之外

我可以使用以下代码复制所有内容:

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)
INSERT INTO wp_topic SELECT * FROM wp_default_topics ON DUPLICATE KEY UPDATE LAST_INSERT_ID(wp_topic.ID)
但最终会出现错误消息:

1064-您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解第1行“+1”附近使用的正确语法

我试过:

INSERT INTO wp_topic SELECT * FROM wp_default_topics ON DUPLICATE KEY UPDATE ID=VALUES(ID+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列

我已经尝试了上面的一些变化,但如果没有任何运气,我可以得到一个指针,我在这里错过了什么

多谢各位

David

插入时需要跳过id列,因此必须明确列出所有列,而不是使用SELECT*


您不能从选择和插入中删除id字段吗

INSERT INTO wp_topic (`user_id`, `name`, `subject`, `company`, `date`) 
SELECT `user_id`, `name`, `subject`, `company`, `date` FROM wp_default_topics 

另一种稍微简单一点的编写INSERT sub select查询的方法,已经提出:

INSERT INTO wp_topic
SELECT NULL, user_id, name, subject, company, date FROM wp_default_topics;

如果您在insert和select中实际列出了字段,则忽略id字段;你不应该有问题。刚刚打开问题,你回答得很好。是的,谢谢Barmar,这确实有效,我知道我做错了什么。第二个问题我注意到你在列名周围使用了“用户名、用户名等”,但Barmar没有,我没有注意到代码中的差异,但是,如果我使用或不使用它们,这会有影响吗?通常情况下,查询将以相同的方式运行。这篇文章提供了一些很好的信息: