我想在Site和ASIN上创建一个独特的组合键,并在创建
时删除重复项 到目前为止,我有 ALTER TABLE产品添加独特(网站,ASIN) 我认为需要一个“重复”,但我无法在http://dev.mysql.com/doc/refman/5.0/en/alter-table.html内找到正确的事情。有没有人有建议?答案 0 :(得分:1)
添加ON DUPLICATE
时,我认为不存在UNIQUE KEY
这样的问题。所以你需要找到一个解决方法。这是一个建议:
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。