📜  如何删除SQL中的重复行(1)

📅  最后修改于: 2023-12-03 15:24:04.235000             🧑  作者: Mango

如何删除 SQL 中的重复行

在处理 SQL 数据时,可能会遇到一些记录完全相同的情况,这时我们就需要删除重复行。以下是几种删除 SQL 中重复行的方法。

1. 使用 DISTINCT 关键字

我们可以使用 SQL 中的 DISTINCT 关键字来删除重复记录。DISTINCT 会筛选掉重复的行,但不会删除行。

SELECT DISTINCT *
FROM your_table;
2. 使用 GROUP BY 和 HAVING 子句

另一种删除重复行的方法是使用 GROUP BYHAVING 子句。GROUP BY 将结果集按指定列分组,HAVING 子句筛选出重复行。

SELECT column1, column2, column3, ...
FROM your_table
GROUP BY column1, column2, column3, ...
HAVING COUNT(*) > 1;
3. 使用 ROW_NUMBER() 函数

ROW_NUMBER() 函数会为每行分配一个唯一的序号。我们可以根据这个序号删除重复行。

WITH cte AS (
    SELECT column1, column2, column3, ..., ROW_NUMBER() OVER(PARTITION BY column1, column2, column3, ... ORDER BY column1) AS rn
    FROM your_table
)
DELETE
FROM cte
WHERE rn > 1;
4. 使用 DELETE 和子查询

我们还可以使用 DELETE 语句和子查询来删除重复行。

DELETE FROM your_table
WHERE column1 IN (
    SELECT column1
    FROM your_table
    GROUP BY column1, column2, column3, ...
    HAVING COUNT(*) > 1
) 
AND column2 IN (
    SELECT column2
    FROM your_table
    GROUP BY column1, column2, column3, ...
    HAVING COUNT(*) > 1
) 
AND column3 IN (
    SELECT column3
    FROM your_table
    GROUP BY column1, column2, column3, ...
    HAVING COUNT(*) > 1
) 
...

以上是四种在 SQL 中删除重复行的方法。我们可以根据数据的不同,选择相应的方法。