考虑下表“推文”
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
我希望有一个简单的方法可以做到这一点,因为否则我会遇到一个很大的问题(告诉你在实际构建数据库之前需要多花一小时的思考!)
答案 0 :(得分:4)
你在问这个问题之前在网上搜索过一个解决方案????如果不是这里是一个关于如何做到这一点的在线教程。
答案 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