我有一个数据库,它通过使用重复编号作为主键的一部分来处理重复记录。我正在尝试插入一些已从审核表中恢复的行。但是,当我去插入记录时,我违反了主键。(这些不是重复的,但是,使它们唯一的字段应该被分解到键中)。我的问题是,当我用select/insert语句插入记录时,是否有一种自动增加重复数字的方法,或者是否需要采用不同的方法。
fieldA nvarchar(255) not null,
fieldB nvarchar(255) not null,
duplicateNbr int not null,
fieldD nvarchar(255) null, /* Should be part of the key */
Table1
'Dave','Jones','FieldD1'
'Dave', Jones','FieldD2'
INSERT INTO Table2 (FName, LName, DuplicateNbr, FieldD)
SELECT FName, LName, 0, FieldD FROM TABLE1 发布于 2015-09-15 13:50:30
在TABLE1上的SELECT语句中,可以使用带分区BY子句的ROW_NUMBER()函数对每个重复集中的重复行进行编号
下面的SQL教程展示了一种使用带分区的数字()检测重复项并删除它们的方法
以下是查询
INSERT INTO Table2 (fieldA, fieldB, DuplicateNbr, FieldD)
SELECT
fieldA,
fieldB,
duplicateNbr = ROW_NUMBER() over (partition by fieldA, fieldB Order by newid())-1,
fieldD
FROM TABLE1我希望能帮上忙
https://stackoverflow.com/questions/32586607
复制相似问题