0

我们有两个表,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 访问中做同样的事情?

4

3 回答 3

1

这是可以解决您的问题的链接 http://www.vb123.com/toolshed/07_access/countercolumn.htm

于 2013-03-28T12:15:31.260 回答
0

table1 ID 是自动编号吗?如果是,您可以简单地将 table2 复制[name]到 table1 并且值将增加。如果它不是自动编号,最好将其设为一个。MS Access 与自动编号 ID 配合得非常好。

于 2013-03-28T11:44:50.477 回答
0

我使用 Dcount 代替 Row Number() 并且它有效!这是最终查询

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
于 2013-03-30T05:30:36.967 回答