【问题标题】:Remove Duplicate title in database table mysql删除数据库表mysql中的重复标题
【发布时间】:2013-07-11 06:44:40
【问题描述】:

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

“post”表的概要结构是: id、postdate、title、description。

对于 post_extra,它们是: eid、news_id、评级、浏览量

第一个表中的“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

我该怎么做?

【问题讨论】:

  • 我还没有任何东西,我想我必须使用 SELECT DISTINCT 但如何?
  • 您要在最高日期之前删除吗?就像 2013 年在你的例子中是最高的......

标签: mysql database sql-delete records


【解决方案1】:

我认为id 在最高posteddate 的情况下是最大的,如果是这样你可以试试这个代码

DELETE from post where id in (select max(id) from post group by title)

【讨论】:

    【解决方案2】:
    DELETE p1 
    FROM Post p1, Post p2 
    WHERE p1.postdate > p2.postdate AND p1.title = p2.title
    

    【讨论】:

    • 为什么不备份您的表格并找出答案?
    • 如果没有多次具有相同标题和相同年份的元组,它将起作用。
    • 有一个名为 post_extra 的表与 post 表有关系我如何用你的方法删除 post id= post_extra id 的记录?
    • @user426069 DELETE e FROM Post p1, Post p2, Post_extra e WHERE p1.postdate > p2.postdate AND p1.title = p2.title AND e.id = p1.id
    • 我运行上面的代码和 mysql 显示“显示行 0 - 0(共 1 行,查询耗时 0.0004 秒)”消息但没有任何反应,也没有删除任何记录
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2014-06-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2010-10-14
    相关资源
    最近更新 更多