有没有办法在它们发生时创建密钥并删除重复项?

时间:2013-03-10 21:16:44

标签: mysql mysqldump

我想在Site和ASIN上创建一个独特的组合键,并在创建

时删除重复项 到目前为止,我有 ALTER TABLE产品添加独特(网站,ASIN) 我认为需要一个“重复”,但我无法在http://dev.mysql.com/doc/refman/5.0/en/alter-table.html内找到正确的事情。有没有人有建议?

1 个答案:

答案 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