mysqlから重複データの削除

mysqlから重複データの削除をしたい場合。

例えば、itemテーブルのcodeというカラムに同じデータが入っているものをひとつに統合する場合。

insert into item_temp SELECT * from item  where id in ( select MAX(ID) FROM item GROUP BY code )

とする。

そのあと、item_tempを、リネームして、もとのテーブルを削除すればOK。

ただし、この場合は重複レコードのうち、IDが最大のものが残される。ほかに条件が必要な場合は、適宜、最後のSELECT文を書き換えればOK。

一手間かかってめんどくさいのだけど、この方法しか思いつかない。。。

もっと便利な方法あったら教えて!

    • 赤彗星
    • 2010年 12月17日

    distinct を使ってやるって手もあるよ。

    SELECT DISTINCT [, 列名2 …] FROM [WHERE条件式など]

  1. >赤彗星さん
    distinctを使っちゃうと、重複がある行が全部削除されちゃいません?UNIQUEな行しか残らないような。今回はCodeが重複しているレコードも、そのなかの一行をのこさないといけないので、うまくDistinct使えなかった><;;;

  1. トラックバックはまだありません。