【发布时间】:2016-08-11 15:41:44
【问题描述】:
这似乎是一项简单的任务,但我正在努力寻找一种方法来做到这一点。我有两个结构相同的表(A 和 B)。两者都有一个自增主键。我希望表 B 中的数据进入表 A。我试过了:
insert into A select * from B
但是我得到一个主键已经存在的错误。我希望表 B 中的新行在将它们插入表 A 时获得新的主键 - 所以基本上丢弃 B 中的主键但插入所有其他列。似乎它应该是一个简单的查询,但我无法弄清楚。谢谢。
【问题讨论】:
-
insert into A (col1, col2, col3) values (select col1, col2, col3 from B)。忽略插入和选择中的主键/自动递增列。 -
我之前试过了,我得到了这个错误 /* SQL 错误 (1064): 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“select col1,col2,col3 from B)”附近使用正确的语法 */
-
那是因为
INSERT...SELECT不使用值列表,而INSERT... VALUES一般不使用SELECTs。