从表中删除mySQL重复项。我究竟做错了什么?

时间:2015-08-23 19:47:10

标签: mysql

我试图删除name相同的重复mySQL记录。我从这里的其他人那里找到了这个解决方案(是的,我以前搜索过了!)但它没有用。我在这里做错了什么?

DELETE FROM db_products USING db_products, db_products e1
WHERE db_products.id > e1.id
AND db_products.name = e1.name  

我还尝试product_id而不是id,因为我调用了我的唯一ID,但它也引发了mySQL错误。

2 个答案:

答案 0 :(得分:0)

最简单的方法是创建一个临时表并添加原始表中的不同值

  

SELECT DISTINCT * INTO db_products_temp FROM db_products;

验证后,删除原始表并将临时表重命名为db_products。

答案 1 :(得分:0)

可以有许多记录满足条件“db_products.id> e1.id”。这就是为什么不删除所有重复的原因。 请尝试以下查询。这可能有所帮助。

    DELETE FROM db_products USING db_products, db_products e1
    WHERE max(db_products.id) > e1.id
    AND db_products.name = e1.name 
    group by db_products.id;