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