通过访问最大ID删除重复记录

时间:2017-11-05 17:10:02

标签: sql ms-access duplicates max

很抱歉问你,但我似乎无法提出好的解决方案,我已经在线完成了研究,但由于我在这方面的经验有限,我似乎无法弄清楚我做错了什么。 我有超过600000条记录有重复,我需要根据最大ID号删除重复项,因为记录有许多其他字段不完全重复,因此我很难搞清楚。请帮忙。

样本附件

enter image description here

我需要它看起来像这样

enter image description here

3 个答案:

答案 0 :(得分:2)

DELETE
FROM yourtable AS a
WHERE a.id NOT IN
(
SELECT Max(b.id)
FROM yourtable AS b
WHERE a.field1 = b.field1
)

使用子查询,您可以为field1的每个值选择最大ID。 然后delete语句将删除field1的每个值的所有记录,其中id不等于最大id值。

答案 1 :(得分:1)

因此,您和您的示例所说的是,如果存在具有相等FIELD1和更大ID的另一行,则应删除该行。翻译成SQL的那句话变为:

delete from my_table where (field1,id) not in
(select field1, max(id) from my_table group by field1);

另一种方法是删除不在field1中每个不同值的max(id)的行中的每一行:

password_valid = bool(re.search(r'[!()£^]', password))

我不确定哪两个更容易阅读。

答案 2 :(得分:0)

试试这个。

 Delete from table where ID NOT IN
 (SELECT MAX(ID) FROM TABLE GROUP BY  filed1, filed2, filed3 , sourcetable)