我有一个简单的查询,用于将数据从一个表传输到另一个表,但是当我从第二个表中选择值时,它会显示特定列中的下一个整数,该列在第一个表中具有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
约束?
答案 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.