我的数据设置如下:
CREATE TABLE TableA
(
id int IDENTITY,
name varchar(256),
description varchar(256)
)
CREATE TABLE TableB
(
id int IDENTITY,
name varchar(256),
description varchar(256)
) --unique constraint on name, description
CREATE TABLE TableA_TableB
(
idA int,
idB int
) --composite key referencing TableA and TableB
情况是我在TableB中有很多重复的记录违反了唯一约束,并且这些重复记录在TableA_TableB中被引用。所以我试图删除那些记录,这很简单(使用以下 CTE),但是更新 TableA_TableB 中的记录以反映这种变化的最佳方法是什么,即让 TableA_TableB 记录引用相同的 ID TableB 而不是每个重复项的不同 ID?
;WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY [Name], [Description]
ORDER BY ( SELECT 0)) RN
FROM TableB)
DELETE FROM cte
WHERE RN = 1