2015-09-04 95 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