如何使用select子查询在主键中插入序列号?

时间:2009-03-25 20:13:29

标签: sql sql-server

我正在读表A并在表B中插入日期(两个表的结构与主键数据类型相同)。在表B中,主键是int,而在表A中,它是UniqueIdentifier。

插入表B (身份证,姓名,地址) (从表A中选择ID,名称,地址)

现在我如何使用上面的脚本在TableB中插入int类型增量值(1,2,3,依此类推)而不是TableA中的uniqueidentifier。

帮助?

4 个答案:

答案 0 :(得分:6)

为什么不更改表B,以便主键是自动递增的标识?

答案 1 :(得分:2)

转到表格属性,选择ID字段,在“身份规范”下,设置“身份增量”= 1,“身份种子”= 1.通过这样做,ID变为自动增量...

然后你的插入语句就像:

INSERT INTO TableB (Names, Address) (select Names, Address from TableA)

答案 2 :(得分:2)

如果不能更改TableB的架构,那么在select语句中添加一个等级,如下所示:

insert into tableB select rank() over(order by id), name, address from tableA

这将始终从1开始。如果您想以1以外的数字开始编号,我可以添加+10。我相信你从那里得到了这个想法。

答案 3 :(得分:0)

CREATE TABLE TableB
(
  ID int PRIMARY KEY IDENTITY(1,1),
  Name nvarchar(200),
  Address nvarchar(200)
)

然后,在查询中,不要指定标识列的值。

INSERT INTO TableB(Name, Address)
SELECT Name, Address FROM TableA