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。
一手間かかってめんどくさいのだけど、この方法しか思いつかない。。。
もっと便利な方法あったら教えて!
distinct を使ってやるって手もあるよ。
SELECT DISTINCT [, 列名2 …] FROM [WHERE条件式など]
>赤彗星さん
distinctを使っちゃうと、重複がある行が全部削除されちゃいません?UNIQUEな行しか残らないような。今回はCodeが重複しているレコードも、そのなかの一行をのこさないといけないので、うまくDistinct使えなかった><;;;