ホームページ >データベース >mysql チュートリアル >MySQL テーブル内の重複行を効率的に削除するにはどうすればよいですか?

MySQL テーブル内の重複行を効率的に削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-23 13:43:08398ブラウズ

How to Efficiently Delete Duplicate Rows in a MySQL Table?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。