1

我有 2 个表,它们都将第一列作为 PRIMARY,这也是自动递增的。第一个表有 67 个条目,从 1 到 67,第二个表有 48 个条目。它们都有相同的列。我想从 Table2 中取出内容并将它们插入到 Table1 中,以便 Table1 中的下一个条目从 68 开始。最后我将在 Table1 中有 115 个条目,PRIMARY 列也将显示这一点。我试过这个:

INSERT INTO `Table1` SELECT * FROM `Table2`

但它说

#1062 - Duplicate entry '1' for key 'PRIMARY'

我该怎么办?

4

4 回答 4

5

命名要插入的列,并从插入中保留 auto_incrment 列

INSERT INTO `Table1` (col2, col3, col4)
select col2, col3, col4 from `table2`
于 2013-10-18T04:09:07.830 回答
3

您需要指定要输入的列,而不是标识列。

就像是

INSERT INTO `Table1` (column1, column2,...,columnn) 
SELECT column1, column2,...,columnn FROM `Table2`
于 2013-10-18T04:10:28.927 回答
0
SET IDENTITY_INSERT database_name.schema_name.table ON 

--Do Insert Here

SET IDENTITY_INSERT database_name.schema_name.table OFF

确保没有重复的 id 想法。

看到这个页面

于 2013-10-18T04:11:18.563 回答
-1

试试这个...

INSERT INTO Table1 (col2, col3,...)
select col2, col3,... from Table2

您可以使用 n 列来执行此操作...在这里,您需要指定要插入除标识列(自动增量列)以外的数据的列名。

于 2013-10-18T04:11:53.920 回答