📜  删除 MS SQL Server 中的重复项(1)

📅  最后修改于: 2023-12-03 14:50:17.519000             🧑  作者: Mango

删除 MS SQL Server 中的重复项

在 MS SQL Server 中,如果表中存在重复的记录,可能会影响数据的准确性和查询的效率。因此,删除重复项是很重要的。

方法一:使用 GROUP BY 和 HAVING

一种删除重复项的方法是使用 GROUP BY 和 HAVING 子句来筛选重复记录,并只保留一条记录。

DELETE FROM your_table
WHERE id NOT IN (
    SELECT MIN(id) 
    FROM your_table 
    GROUP BY column1, column2, column3 -- 列出需要去重的列名
    HAVING COUNT(*) > 1
);

这个查询将返回所有列除了列名列1,列2和列3外其余的所有列,然后找出所有出现多次的行,删除那些没有出现最小行ID的行(因为这些是重复记录)。

方法二:使用 ROW_NUMBER() 和 CTE

另一个去除 MS SQL Server 中重复项的方法是使用 ROW_NUMBER() 函数和 CTE(通用表表达式)。

WITH cte AS (
    SELECT column1, column2, column3, ROW_NUMBER() OVER (
        PARTITION BY column1, column2, column3 -- 列出需要去重的列名
        ORDER BY (SELECT 0)
    ) AS rn
    FROM your_table
)
DELETE FROM cte WHERE rn > 1;

这个查询将返回所有列除了列名列1,列2和列3外其余的所有列,然后使用 ROW_NUMBER() 函数来排名每个组中的行。最后,删除排名大于1的行(即,删除重复记录)。

以上两个方法都可以有效地去除 MS SQL Server 中的重复项。您可以根据自己的需要选择其中一个来使用。

总结

在 MS SQL Server 中删除重复项是必要的,因为这可以保证数据的准确性。通过使用 GROUP BY 和 HAVING 子句或 ROW_NUMBER() 函数和 CTE,您可以轻松地删除 MS SQL Server 中的重复项。