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

Mysql 如何从数据库中删除重复条目?,mysql,sql,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 i

考虑下表推文

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
每个tweet在数据库中只能出现一次。正如您所见,完全相同的tweet相同的call_id、id_str、timestamp和text-换句话说,除了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

我希望有一个简单的方法可以做到这一点,因为否则我会有一个巨大的问题告诉你,在实际构建数据库之前花一个小时思考能做什么

在问这个问题之前,您是否在网上搜索过解决方案????如果没有,这里有一个关于如何做这件事的在线教程


在问这个问题之前,你是否在网上搜索过解决方案????如果没有,这里有一个关于如何做这件事的在线教程


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

要获取唯一的条目,您可以轻松执行以下操作:

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

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

要获取唯一的条目,您可以轻松执行以下操作:

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

这个问题肯定被回答了一百万次。这个问题肯定被回答了一百万次。谢谢你。我已经将tweets表复制到tweets_new ii中,在tweets_new中,我删除了tweet_id第三列,我创建了一个名为tweets_distinct的表,该表的结构与tweets_new iv相同,我认为这应该可以实现以下技巧:选择distinct*进入tweets_distinct FROM tweets_new-但是,我得到一个错误:1327-未声明的变量:tweets\u distinct。我不明白,因为我反复检查,但tweets_distinct表确实不存在拼写错误或其他问题。你的想法请:-P.S.我可以很容易地删除推特id栏,因为它还没有被引用到任何地方。因此,我可以先创建一个清理过的表,然后插入一个自动递增字段,再次对tweet进行编号。您可以使用insert into tweets_new select*from tweets_distinct,或者更好地指定列名:insert into tweets_newa、b select a、b from tweets_distinct谢谢。我已经将tweets表复制到tweets_new ii中,在tweets_new中,我删除了tweet_id第三列,我创建了一个名为tweets_distinct的表,该表的结构与tweets_new iv相同,我认为这应该可以实现以下技巧:选择distinct*进入tweets_distinct FROM tweets_new-但是,我得到一个错误:1327-未声明的变量:tweets\u distinct。我不明白,因为我反复检查,但tweets_distinct表确实不存在拼写错误或其他问题。你的想法请:-P.S.我可以很容易地删除推特id栏,因为它还没有被引用到任何地方。因此,我可以先创建一个清理过的表,然后插入一个自动递增字段,再次对tweet进行编号。您可以使用insert into tweets_new select*from tweets_distinct,或者更好地指定列名:insert into tweets_newa、b select a、b from tweets_distinct