📅  最后修改于: 2023-12-03 15:22:43.422000             🧑  作者: Mango
在许多情况下,我们会需要从数据库中删除重复的行,但保留最新的行。这种情况在 MySQL 中也很常见,虽然它的语法可能与其他数据库不同。
为了完成这一任务,我们可以使用以下步骤:
CREATE TEMPORARY TABLE temp_table LIKE original_table;
INSERT INTO temp_table
SELECT DISTINCT t1.* FROM original_table t1
INNER JOIN (
SELECT id, MAX(date_added) AS max_date_added
FROM original_table
GROUP BY id
) t2 ON t1.id = t2.id AND t1.date_added = t2.max_date_added;
这些 SQL 语句将创建一个临时表 temp_table,并从 original_table中选择独特(即非重复)的行,并且各自都是每个 ID 组中的最新行。temp_table 现在包含所有唯一 ID 的最新行。
DELETE FROM original_table;
INSERT INTO original_table SELECT * FROM temp_table;
这些SQL 语句将删除原始表中的所有行,并从 temp_table 中将唯一的、最新的行复制回该表。
DROP TEMPORARY TABLE IF EXISTS temp_table;
这个语句将临时表 temp_table 删除(如果存在)。我们现在已经删除了所有重复的行,并保留了每个 ID 组中最新的行。
希望这个 SQL 解决方案能够帮助你处理 MySQL 数据库中的重复行问题。