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

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

Mary-Kate Olsen
リリース: 2025-01-23 13:43:08
オリジナル
369 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート