删除具有相同ID号的重复行

时间:2015-09-04 09:53:37

标签: mysql database duplicates

我注意到我的一张桌子上有很多重复。 以下是表格外观的示例(带有一个id_product_attribute数字的示例):

enter image description here

所以我想删除EACH id_product_attribute的重复货币。 期望的结果是每个id_product_attribute都有一个id货币。这意味着:1,2,3,4,6->每个id_product 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

任何人都可以帮我吗?任何提示都将非常感激。

谢谢

1 个答案:

答案 0 :(得分: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;