2015-09-04 63 views
0

我注意到我的表中有很多重复项。 下面是桌子的样子(例如一个id_product_attribute数)的例子:删除具有相同ID号的重复行

enter image description here

所以我想删除重复的货币对于每个id_product_attribute。 期望的结果是每个id_product_attribute都有一个id货币。这意味着:每个id_product有1,2,3,4,6 - > 5行,而不是10(5个副本)。

我尝试使用不同的代码,但我不能让它工作:

DELETE FROM product_attribute USING product_attribute, product_attribute pa 
WHERE product_attribute.id_currency > pa.id_currency 
AND product_attribute.id_product_attribute = pa.id_product_attribute 
AND product_attribute_price.id_product_attribute = '16632' 

所以如果我运行上面的,我会删除一切,只id_curreny 1将呆在那里。我需要有:

Attribute Currency 
    16632 - 1 
    16632 - 2 
    16632 - 3 
    16632 - 4 
    16632 - 6 

任何人都可以帮助我吗?任何提示将不胜感激。

谢谢

+0

看到这个:http://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql或http:// stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql – PaulF

回答

1

就个人而言,我会使用一个子查询与聚合。但你也可以采取你想要的方法。取而代之的是常规连接,使用left join,并检查是否有匹配:

DELETE pa 
    FROM product_attribute pa LEFT JOIN 
     product_attribute pa2 
     ON product_attribute.id_currency > pa.id_currency AND 
      pa.id_product_attribute = pa2.id_product_attribute AND 
    WHERE pa.id_product_attribute = '16632' AND 
      pa2.id_product_attribute IS NULL; 
+0

你好,谢谢你的回答。我目前得到一个语法错误“错误在查询(1064):语法错误附近'pa左加入product_attribute pa2 ON produ'在第2行”。将尝试解决这个问题,看看它是否工作:)再次感谢 – shieldcy