我想删除重复的记录而不使用ROW_NUMBER()函数(SQL Server)

示例:具有以下数据的表:

name     salary
-----------------
Husain   20000.00
Husain   20000.00
Husain   20000.00
Munavvar 50000.00
Munavvar 50000.00


删除重复记录后
表应包含以下数据:

name     salary
-----------------
Husain   20000.00
Munavvar 50000.00

最佳答案

由于此问题的动机似乎是学术兴趣而不是实际用途...

该表没有主键,但未记录的伪列%%physloc%%可以提供替代。

DELETE T1
FROM YourTable T1 WITH(TABLOCKX)
WHERE CAST(T1.%%physloc%% AS BIGINT)
NOT IN (SELECT MAX(CAST(%%physloc%% AS BIGINT))
        FROM YourTable
        GROUP BY Name, Salary)


实际上,您永远都不要使用上述和just use row_number,因为它更有效且有据可查。

Data Explorer Demo

10-05 19:54