Sql 删除具有原始记录的重复项

Sql 删除具有原始记录的重复项,sql,sql-server,Sql,Sql Server,我有一个很好的SQL代码,可以从表中选择/删除重复记录: WITH CTE AS( SELECT UserId, A, B, RN = ROW_NUMBER()OVER(PARTITION BY A, B ORDER BY UserId) FROM Users ) SELECT * FROM CTE WHERE RN > 1 但它选择的是没有原始记录的所有副本。如何选择重复项+原始项(+1)?我想您应该使用计数(*)而不是行数() 我想您应该使用count(*)而不是row\u n

我有一个很好的SQL代码,可以从表中选择/删除重复记录:

WITH CTE AS(
 SELECT UserId, A, B,
 RN = ROW_NUMBER()OVER(PARTITION BY A, B ORDER BY UserId)
 FROM Users
) SELECT * FROM CTE WHERE RN > 1

但它选择的是没有原始记录的所有副本。如何选择重复项+原始项(+1)?

我想您应该使用
计数(*)
而不是
行数()


我想您应该使用
count(*)
而不是
row\u number()


如果您希望看到原始记录和重复记录,您可以自行加入您的CTE:

WITH CTE AS (
     SELECT UserID, A, B, rn=ROW_NUMBER() OVER (PARTITION BY A, B, ORDER BY UserID)
     FROM Users)
SELECT c1.*, c2.*
FROM CTE c1
INNER JOIN CTE c2 ON c1.RN = 1 AND c2.RN > 1

如果您希望看到原始记录和重复记录,您可以自行加入您的CTE:

WITH CTE AS (
     SELECT UserID, A, B, rn=ROW_NUMBER() OVER (PARTITION BY A, B, ORDER BY UserID)
     FROM Users)
SELECT c1.*, c2.*
FROM CTE c1
INNER JOIN CTE c2 ON c1.RN = 1 AND c2.RN > 1