mysql - 大型 SQL 数据库删除重复行

标签 mysql sql sql-server-2008 duplicates sql-delete

具有 60 000 000 条记录的大型 SQL 2008 表,我遇到重复行的问题。

这个命令给了我我的副本 http://support.microsoft.com/kb/139444

SELECT     id, sa_trvalue,  COUNT(*) AS tot  
FROM         msanal   
GROUP BY id, sa_trvalue  
HAVING      (COUNT(*) > 1)  

但是当我执行这些步骤(INTO 和 DISTINCT)时,我没有足够的内存来完成操作。

最佳答案

您可以尝试这种可能需要更少内存的方法:

WITH CTE AS
(
    SELECT  id, sa_trvalue, 
            rn = ROW_NUMBER() OVER (PARTITION BY id, sa_trvalue ORDER BY id ASC)
    FROM    msanal   
)
DELETE FROM CTE WHERE rn > 1

公用表表达式还有一个优点,即您可以轻松修改它以查看要删除的内容。因此,您只需将 DELETE 更改为 SELECT *

关于mysql - 大型 SQL 数据库删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19120451/

相关文章:

mysql - Netbeans 将查询中的数据放入变量中

sql - 从存储过程执行SQL Server代理作业并返回作业结果

Android JSON 对象丢失了 URL 中的剩余数据

php pdo insert,update into one table in mean time insert query to other table

mysql - 在同一台服务器上运行 MariaDB 和 MySQL

sql - 计算距离时,我的查询收到以下错误

sql - 选择超过总值百分比的行子集

php - 代码点火器 : A lot of function in the same controller

c# - 带日期的复杂 LINQ to SQL 查询

sql - 如何在sql server 2008中创建时+分+秒的时间