我注意到我的一张桌子上有很多重复。 以下是表格外观的示例(带有一个id_product_attribute数字的示例):
所以我想删除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
任何人都可以帮我吗?任何提示都将非常感激。
谢谢
答案 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;