删除具有相同ID号的重复行
问题描述:
我注意到我的表中有很多重复项。 下面是桌子的样子(例如一个id_product_attribute数)的例子:删除具有相同ID号的重复行
所以我想删除重复的货币对于每个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
任何人都可以帮助我吗?任何提示将不胜感激。
谢谢
答
就个人而言,我会使用一个子查询与聚合。但你也可以采取你想要的方法。取而代之的是常规连接,使用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
看到这个:http://*.com/questions/3311903/remove-duplicate-rows-in-mysql或http:// *.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql – PaulF