📅  最后修改于: 2023-12-03 15:41:45.911000             🧑  作者: Mango
在 MySQL 数据库中,经常需要识别具有 2 个相同列值的行,并将它们删除以消除重复。以下是一些可能用到的方法和代码片段。
一个常见的方法是使用 GROUP BY 和 HAVING 子句识别重复的行,并使用 DELETE 语句将它们从表中删除。
DELETE FROM table_name
WHERE col_name IN (
SELECT col_name
FROM table_name
GROUP BY col_name
HAVING COUNT(*) > 1
);
这个代码片段会查找表中具有重复 col_name 值的行,并将它们从表中删除。请注意,其中的子查询先使用 GROUP BY 后跟 HAVING 子句,以查找重复的行。然后,主查询使用 DELETE 从表中删除这些行。
另一个方法是使用 INNER JOIN 和子查询来识别重复的行。
DELETE t1
FROM table_name t1
INNER JOIN (
SELECT col_name
FROM table_name
GROUP BY col_name
HAVING COUNT(*) > 1
) t2 ON t1.col_name = t2.col_name;
这个代码片段也会查找具有重复 col_name 值的行,并将它们从表中删除。请注意,这里使用 INNER JOIN 和子查询找到重复的行。然后,主查询使用 DELETE 从表中删除这些行。
无论你使用哪种方法,都应该能够很容易地识别并删除具有 2 个相同列值的重复行。请注意,如果你需要保留其中一个副本,请先使用 SELECT 语句查找这些行,然后手动删除或更新表中的单个副本。