2013-03-10 164 views
0

我想創建網站和ASIN獨特的combokey並刪除重複,同時創造有沒有辦法在發生密鑰時刪除重複項?

到目前爲止,我還 ALTER TABLE產品ADD UNIQUE(網站,ASIN) 我想需要有一個「在複製」,但我無法在http://dev.mysql.com/doc/refman/5.0/en/alter-table.html之內找到正確的事情..有沒有人有建議?

+0

該表是否有其他列,使得'SELECT DISTINCT *'仍然會返回'(Site,ASIN)'的重複項? – 2013-03-10 21:19:09

+0

它確實,當前的UNIQUE鍵在4列 – Jay 2013-03-10 21:21:54

+0

ALTER IGNORE TABLE?有誰知道這會有什麼影響? – Jay 2013-03-10 21:22:25

回答

1

我不認爲有這樣的事情,當添加UNIQUE KEYON DUPLICATE。所以你需要找到一個解決方法。以下是一個建議:

1-識別重複的行並將值存儲在臨時表中。

CREATE TEMPORARY TABLE Duplicates 
    (SELECT 
    Site, ASIN 
    FROM 
    Products 
    GROUP BY 
    Site, ASIN 
    HAVING 
    COUNT(*) > 1 
    ); 

2-將臨時表與原始表連接並刪除不再需要的重複行。 (來自我認爲你要與SKU IS NULL刪除那些評論)

DELETE p 
FROM 
    Products AS p 
INNER JOIN 
    Duplicates AS d 
ON 
    d.Site = p.Site and d.ASIN = p.ASIN 
WHERE 
    p.SKU IS NULL; 

3-創建唯一的密鑰:

ALTER TABLE Products ADD UNIQUE KEY (Site, ASIN); 

這裏是一個fiddle我創建。

+0

結束運行上面的唯一密鑰插入並重新運行爬網程序...但這也起作用。 – Jay 2013-03-11 09:34:44

相關問題