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 に答える