📅  最后修改于: 2023-12-03 15:24:04.235000             🧑  作者: Mango
在处理 SQL 数据时,可能会遇到一些记录完全相同的情况,这时我们就需要删除重复行。以下是几种删除 SQL 中重复行的方法。
我们可以使用 SQL 中的 DISTINCT
关键字来删除重复记录。DISTINCT
会筛选掉重复的行,但不会删除行。
SELECT DISTINCT *
FROM your_table;
另一种删除重复行的方法是使用 GROUP BY
和 HAVING
子句。GROUP BY
将结果集按指定列分组,HAVING
子句筛选出重复行。
SELECT column1, column2, column3, ...
FROM your_table
GROUP BY column1, column2, column3, ...
HAVING COUNT(*) > 1;
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;
我们还可以使用 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 中删除重复行的方法。我们可以根据数据的不同,选择相应的方法。