我想在站点和 ASIN 上创建一个唯一的组合键,并在创建时删除重复项
到目前为止,我有 ALTER TABLE Products ADD UNIQUE (Site,ASIN) 我认为需要有一个“On Duplicate”,但我无法在http://dev.mysql.com/doc/refman/5.0中找到正确的操作/en/alter-table.html .. 有人有建议吗?
我想在站点和 ASIN 上创建一个唯一的组合键,并在创建时删除重复项
到目前为止,我有 ALTER TABLE Products ADD UNIQUE (Site,ASIN) 我认为需要有一个“On Duplicate”,但我无法在http://dev.mysql.com/doc/refman/5.0中找到正确的操作/en/alter-table.html .. 有人有建议吗?
我不认为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);
这是我创建的小提琴。