我想創建網站和ASIN獨特的combokey並刪除重複,同時創造有沒有辦法在發生密鑰時刪除重複項?
到目前爲止,我還 ALTER TABLE產品ADD UNIQUE(網站,ASIN) 我想需要有一個「在複製」,但我無法在http://dev.mysql.com/doc/refman/5.0/en/alter-table.html之內找到正確的事情..有沒有人有建議?
我想創建網站和ASIN獨特的combokey並刪除重複,同時創造有沒有辦法在發生密鑰時刪除重複項?
到目前爲止,我還 ALTER TABLE產品ADD UNIQUE(網站,ASIN) 我想需要有一個「在複製」,但我無法在http://dev.mysql.com/doc/refman/5.0/en/alter-table.html之內找到正確的事情..有沒有人有建議?
我不認爲有這樣的事情,當添加UNIQUE KEY
時ON 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我創建。
結束運行上面的唯一密鑰插入並重新運行爬網程序...但這也起作用。 – Jay 2013-03-11 09:34:44
該表是否有其他列,使得'SELECT DISTINCT *'仍然會返回'(Site,ASIN)'的重複項? – 2013-03-10 21:19:09
它確實,當前的UNIQUE鍵在4列 – Jay 2013-03-10 21:21:54
ALTER IGNORE TABLE?有誰知道這會有什麼影響? – Jay 2013-03-10 21:22:25