我已经做了很多查找,我尝试过的每个解决方案似乎都不起作用。我已经删除了主键和自动增量。
我有一个大约有 260k 行的数据库。该架构如下所示: [架构] http://imgur.com/X0oROkc
它是 Amazon RDS 上托管的 MySQL innodb 实例。当我尝试执行以下命令来删除重复行(推文、用户名)时,我收到 2006 错误 - mysql 服务器已消失。
create temporary table tmpTable (id int);
insert tmpTable
(id)
select id
from rawTweets yt
where exists
(
select *
from rawTweets yt2
where yt2.tweet = yt.tweet
and yt2.username = yt.username
and yt2.id > yt.id
);
DELETE FROM rawTweets USING rawTweets, tmpTable WHERE rawTweets.id=tmpTable.id
如有任何帮助,我们将不胜感激!
-马特
最佳答案
另一种方法可能如下:
创建一个与您拥有的相同的表,但在推文和用户名上添加唯一索引
并插入替换所有行。
CREATE TABLE unique_tweets LIKE tweets;
ALTER TABLE unique_tweets ADD UNIQUE INDEX `uniq_username_tweet` (`username`, `tweet`);
REPLACE INTO unique_tweets (SELECT * FROM tweets);
之后只需重命名表即可。
关于MySQL InnoDB 删除重复行 - 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229046/