我们有两个表,table1(id int,name nvarchar(50))和table2(id int,name nvarchar(50))。对于这两个表,id是主键。我想将行从table2移动到table1,PK值递增,即我想要table1的id = max(id)+1,用于所有行的复制。我发现这样的查询对于sql server
declare @root int
select @root=max(id) from Bgd_common.dbo.table1
insert into Bgd_common.dbo.table1(id,Name) select @root + ROW_NUMBER() OVER(ORDER BY ID),name from Bgd_common.dbo.table2
但是ROW_NUMBER()不能用于Acces数据库。我不想使用内置的自动增量属性,因为我想删除一行然后在中间等插入行而内置自动增量属性会导致一些限制如何操作。如何在MS访问中做同样的事情?
答案 0 :(得分:1)
答案 1 :(得分:0)
table1 ID是自动编号吗?如果是,您只需将table2 [name]
复制到table1,值就会递增。如果它不是自动编号,最好将其设为一个。 MS Access可以很好地处理自动编号ID。
答案 2 :(得分:0)
我使用Dcount代替行号()并且它有效! 这是最终查询
insert into Bgd_common.dbo.table1(id,Name) select (select max(id) from Bgd_common.dbo.table1) + Dcount("id","test2","id <= " & [id]) ,name from Bgd_common.dbo.table2