0

2 列の主キーを使用していますが、2 番目の列 (列 2) に同じアイテムにマップされる値があり、重複が発生することがわかりました。

2 列の主キーを作成する新しい列 (列 3) を作成しました。重複する項目を削除して、新しい主キー用にデータベースを準備する必要があります。

重複する列を分離できるクエリを探しています。たとえば、列 1 と列 3 の両方が重複している場合です。例えば

Column 1   Column 2   Column 3   Remove?
1          a          x          n
1          b          x          y
2          b          y          n
3          c          z          n
3          d          z          y
3          e          z          y
4          f          x          n

列 3 が同じであるため、どの列の値を保持してもかまいません。

4

2 に答える 2

0

新しいテーブルを作成して、テーブル内の重複行を削除する方法の例を次に示します。元のテーブル名 (重複を含む) がtblであると仮定すると、このクエリを実行すると、データベースに 2 つのテーブルが作成されます。tblこれは、重複のない新しいテーブルでtbl_oldあり、元のテーブル (名前が変更されたばかり) です。

CREATE TABLE tbl_unique LIKE tbl;
  ALTER TABLE tbl_unique
  ADD UNIQUE KEY unkey(C1,C3);

INSERT IGNORE INTO tbl_unique
  SELECT * FROM tbl;

ALTER TABLE tbl RENAME tbl_old;
ALTER TABLE tbl_unique RENAME tbl;

例: http://sqlfiddle.com/#!2/da167/1/0

ソース: https://dba.stackexchange.com/questions/9602/deleting-duplicates-with-group-by-and-count

于 2013-06-18T22:52:43.837 に答える