【发布时间】:2014-08-01 14:48:56
【问题描述】:
我有一个包含多个相同条目的表,我想删除重复的条目,但如果有意义的话,保留最近的记录。
我有唯一的 ID 列,而我希望只有 1 个相同整数的列是“所有者”列,因为不需要超过一个。
【问题讨论】:
-
请包括您的表结构,最好是您自己的尝试。
我有一个包含多个相同条目的表,我想删除重复的条目,但如果有意义的话,保留最近的记录。
我有唯一的 ID 列,而我希望只有 1 个相同整数的列是“所有者”列,因为不需要超过一个。
【问题讨论】:
您可以创建一个临时表并将所需的数据放在那里。然后删除原始表中的所有数据并从临时表中插入数据。喜欢:
CREATE TABLE TMP (SELECT DISTINCT * FROM <ORIGINAL_TABLE>);
TRUNCATE TABLE <ORIGINAL_TABLE>;
INSERT INTO <ORIGINAL_TABLE> (SELECT * FROM TMP);
【讨论】:
DELETE FROM table WHERE `id` NOT IN (
SELECT `id` FROM table
GROUP BY `id`
ORDER BY `date` DESC
LIMIT 1
);
【讨论】: