列插入另一个表时更改值

时间:2016-09-01 20:42:37

标签: sql sql-server

我有一个简单的查询,用于将数据从一个表传输到另一个表,但是当我从第二个表中选择值时,它会显示特定列中的下一个整数,该列在第一个表中具有IDENTITY约束但是它不会转移它。

insert into Table2 (id, name, phone)
    select ID, Name, Phone 
    from Table1

表1的值是

1 John  123456
2 David 456789
3 Tony  547892

但在表2中显示

4 John  123456
5 David 456789
6 Tony  547892

如何在ID列中避免这种增量,而Table2 ID列没有IDENTITY约束?

2 个答案:

答案 0 :(得分:0)

有多种解决方案,但快速解决方法如下:

insert into Table2 (id, name, phone)
select (ID * 1)
       ,Name
       ,Phone 
from Table1

答案 1 :(得分:0)

您可以强制SQL接受身份而不是生成身份 - 但是请注意,可能存在重复的身份问题。

set identity_insert table2 on

insert into Table2 (id, name, phone)
select ID, Name, Phone from Table1

set identity_insert table2 off

https://msdn.microsoft.com/en-CA/library/ms188059.aspx

根据您的具体情况,另一个选择是在插入之前发出TRUNCATE TABLE table2来擦除每一行 - 但这也会将标识重置为1.