サイトと 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);
これが私が作成したフィドルです。