删除原始记录的重复项

use*_*297 1 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
Run Code Online (Sandbox Code Playgroud)

但它正在选择没有原始记录的所有重复项.如何选择重复+原件(+1)?

Gor*_*off 5

我想你想用count(*)而不是row_number():

WITH CTE AS (
      SELECT UserId, A, B, COUNT(*) OVER (PARTITION BY A, B) as cnt
      FROM Users
     )
SELECT *
FROM CTE
WHERE CNT > 1;
Run Code Online (Sandbox Code Playgroud)