我想删除重复的记录而不使用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)