sql - 对表进行重复数据删除的最佳方法是什么?

标签 sql algorithm performance duplicates

我已经看到了几个解决方案,但我想知道最好和最有效的方法是删除表的重复数据。您可以使用代码(SQL 等)来说明您的观点,但我只是在寻找基本算法。我以为 SO 上已经有关于此的问题,但我找不到,所以如果它已经存在,请提醒我。

(只是为了澄清 - 我指的是在具有增量自动 PK 的表中删除重复项,并且有些行在除 PK 字段之外的所有内容中都是重复的。)

最佳答案

使用解析函数row_number:

WITH CTE (col1, col2, dupcnt)
AS
(
SELECT col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1) AS dupcnt
FROM Youtable
)
DELETE
FROM CTE
WHERE dupcnt > 1
GO                                                                 

关于sql - 对表进行重复数据删除的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230295/

相关文章:

mysql - 从 MySQL 中的每小时集中选择 30 个 EOD 记录

sql - 为什么变量在 `execute` SQL 查询中需要单引号?

python - 如何以垂直角度对 blob 上的一条线进行采样? (在 Python/OpenCV 中,除非你建议切换到其他东西)

arrays - 算法 - 在另一个二维数组中查找二维数组的存在

c - 链表无限循环

javascript - 自动测量功能时间

mysql - 根据 SUM 将位置值分配给行

sql - 比较同一个表中的子字符串

python - 比在子进程中调用 "ls"更快的获取目录列表的方法

javascript - 如何使用延迟和内联脚本保留脚本执行顺序?