我想创建网站和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