如何从数据库中删除重复的条目?

时间:2012-03-31 21:08:10

标签: mysql sql

考虑下表“推文”

tweet_id  call_id   id_str  timestamp  text
--------------------------------------------------
1         11        12345   312323134  lorem ipsum
2         11        12345   312323134  lorem ipsum
3         11        12345   312323134  lorem ipsum
4         11        12345   312323134  lorem ipsum
5         11        67890   325565454  dolor
6         11        34355   333544664  samet

每条推文只应在数据库中出现一次。正如你所看到的,完全相同的推文(相同的call_id,id_str,时间戳和文本 - 换句话说,除了tweet_id(这是一个自动编号字段)之外,一切都是相同的)已经存储了4次(!)

有没有办法完全匹配(所以:除了tweet_id之外的所有内容),然后删除它们的最后一个x - 1(这里:4 -1 = 3)?换句话说,清理后的表格看起来像

tweet_id  call_id   id_str  timestamp  text
--------------------------------------------------
1         11        12345   312323134  lorem ipsum
5         11        67890   325565454  dolor
6         11        34355   333544664  samet

我希望有一个简单的方法可以做到这一点,因为否则我会遇到一个很大的问题(告诉你在实际构建数据库之前需要多花一小时的思考!)

2 个答案:

答案 0 :(得分:4)

你在问这个问题之前在网上搜索过一个解决方案????如果不是这里是一个关于如何做到这一点的在线教程。

http://www.sqlteam.com/article/deleting-duplicate-records

答案 1 :(得分:2)

最简单的方法是将清理过的数据复制到新表中,删除旧表,将清理后的数据放回旧表中。

获取唯一条目,您可以轻松完成:

select max(tweet_id) as tweet_id,  call_id,   id_str,  timestamp,  text from tbl group by  call_id,   id_str,  timestamp,  text