gpt4 book ai didi

mysql - 删除mysql中的重复记录

转载 作者:行者123 更新时间:2023-11-29 08:27:12 24 4
gpt4 key购买 nike

我们有 2 个表,名为:“post”和“post_extra”

“post”表的摘要构造为:id,postdate,title,description

对于 post_extra 来说,它们是:eid,news_id, rating,views

第一个表中归档的“id”与第二个表中的“news_id”相关。

表中有超过 100,000 条记录,其中许多是重复的。我想只保留一条记录并删除“post”表中具有相同标题的重复记录,然后删除“post_extra”上的相关记录

我在 phpmyadmin 上运行了这个查询,但服务器崩溃了。我不得不重新启动它。

DELETE e 
FROM Post p1, Post p2, Post_extra e
WHERE p1.postdate > p2.postdate
AND p1.title = p2.title
AND e.news_id = p1.id

我该怎么做?

最佳答案

假设您有一个名为“tables”的表,其中有重复的记录。首先,您必须按要删除重复项的列进行分组。但我没有使用分组依据进行分组。我正在编写自联接,而不是编写嵌套查询创建临时表

SELECT * FROM `names` GROUP BY title, id having count(title) > 1;

此查询返回重复记录的数量及其标题和 ID。

在这种情况下,您不需要创建临时表。

删除除一条记录之外的重复项:在此表中应该有自动增量列。我刚刚遇到的可能的解决方案:

DELETE t1 FROM tables t1, tables t2 WHERE t1.id > t2.id AND t1.title = t2.title

如果您想保留具有最低自动增量 id 值的行或

DELETE t1 FROM tables t1, tables t2 WHERE t1.id < t2.id AND t1.title = n2.title

如果你想保留具有最高自动增量id值的行。

您可以通过给定查询再次选择重复记录来交叉检查您的解决方案:

SELECT * FROM `tables` GROUP BY title, id having count(title) > 1;

如果返回0结果,则查询成功。

关于mysql - 删除mysql中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17639079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com