0

我想在站点和 ASIN 上创建一个唯一的组合键,并在创建时删除重复项

到目前为止,我有 ALTER TABLE Products ADD UNIQUE (Site,ASIN) 我认为需要有一个“On Duplicate”,但我无法在http://dev.mysql.com/doc/refman/5.0中找到正确的操作/en/alter-table.html .. 有人有建议吗?

4

1 回答 1

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);

这是我创建的小提琴。

于 2013-03-11T05:37:14.960 回答