sql - 不使用 ROW_NUMBER() 函数删除重复记录

标签 sql sql-server

我想在不使用 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 )

关于sql - 不使用 ROW_NUMBER() 函数删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37560593/

相关文章:

MySQL FullText bool 模式 : searching keywords that contain '+' as part of the string

sql - 如何选择特定日期的行,忽略 SQL Server 中的时间

SQL 2005 - 搜索存储过程中的文本(并非搜索所有文本)

sql-server - 我们可以在 Azure 上的 T-SQL 过程中创建数据库范围的凭据吗

c# - 替换字符串中的 [ ] 括号

java - 列不在 FROM 列表 Java 数据库搜索中的任何表中

sql-server - sp_who2 BlkBy 休眠进程等待命令

sql - SQL Server 中 FOR XML PATH 查询的列作为内容

sql - 将 SQL 数据迁移到 Azure/云

c# - 根据参数将SQL表中的数据拉取到DataTable中