MySQL テーブルの重複行を削除する方法
データベース管理では、重複データを削除するのが一般的なタスクです。 MySQL では、これは DELETE コマンドを使用して実現できます。
以下はサンプルテーブルです:
<code class="language-sql">CREATE TABLE names ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, PRIMARY KEY (id) );</code>
テーブルに重複が含まれているとします。
<code class="language-sql">INSERT INTO names (name) VALUES ('google'); INSERT INTO names (name) VALUES ('yahoo'); INSERT INTO names (name) VALUES ('msn'); INSERT INTO names (name) VALUES ('google'); INSERT INTO names (name) VALUES ('google'); INSERT INTO names (name) VALUES ('yahoo'); SELECT * FROM names;</code>
すべての重複行を削除するには (最小 ID を持つ行を保持します)、次のクエリを使用します:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
または、最大の ID を持つ行を保持するには、次のクエリを使用します:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name;</code>
警告: 偶発的なデータ損失を避けるために、削除クエリを実行する前に必ずテーブルをバックアップしてください。
大きなテーブルの場合は、より高速な INSERT メソッドと DISTINCT メソッドを使用することをお勧めします。
```SQL 一時テーブル temp_names の作成 SELECT DISTINCT ID、名前 名前から; TRUNCATE TABLE 名。 INSERT INTO 名前 (ID, 名前) SELECT ID、名前 FROM temp_names; DROP TABLE temp_names; 「」以上がMySQL テーブル内の重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。