こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLで、重複レコードを削除

no type name
----------------------------
1 1 peach
1 1 peach
2 5 tomato
4 6 apple
4 6 apple
1 1 peach

 上記のように、重複するレコード(行)が存在してしまっているテーブルで、重複をなくす処理を、SQLで簡単に行なうにはどうしたら良いでしょうか。MySQLです。上の例では、下のように更新したいのです。よろしくお願いします。

no type name
----------------------------
1 1 peach
2 5 tomato
4 6 apple

投稿日時 - 2014-09-17 15:37:41

QNo.8757873

困ってます

質問者が選んだベストアンサー

http://ma-bank.com/item/600

失礼!
仕事に出かける直前だったのでチラ見で回答。
やり方は、上記サイトを!

投稿日時 - 2014-09-17 23:09:05

ANo.2

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

joinしてlimit指定でdeleteできると楽なのですが、標準のSQLではないようです

まぁ普通に考えればプライマリーキーやユニークキーのないテーブルは
データを特定過程が煩雑なので通常のSQL文では処理は難しいですね。
つまりはテーブルの作り方が変・・・ということです。
普通は重複してから消すのではなく、重複しないように属性をつけます

無理やりdeleteする方法としては
(1)distincでテンポラリにデータを移し、truncateした後戻す
(2)プロシージャで消す

のどちらかが妥当です

投稿日時 - 2014-09-18 10:04:23

ANo.1

http://www.dbonline.jp/mysql/select/index13.html

SELECT DISTINCT *
FROM テーブル1;

MySQLもAccessも一緒ですね。

投稿日時 - 2014-09-17 15:46:00

お礼

ありがとうございます。
でも、SELECT したいのではなく、テーブルから重複レコードを削除して、重複をなくしてしまいたいのです。(つまり、テーブルを更新したいのです)

投稿日時 - 2014-09-17 16:08:51

あなたにオススメの質問