ホームページ > データベース > mysql チュートリアル > 一時テーブルを使用せずに MySQL テーブルから重複レコードを効率的に削除するにはどうすればよいですか?

一時テーブルを使用せずに MySQL テーブルから重複レコードを効率的に削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-04 03:46:40
オリジナル
1019 人が閲覧しました

How Can I Efficiently Remove Duplicate Records from a MySQL Table Without Using Temporary Tables?

一時テーブルを使用しない MySQL の重複レコードの効率的な削除

データベース内の重複レコードの検出は、特に主キーがない場合に困難になる可能性があります。ただし、この問題に対処する効果的な手法があります。

この場合、アンケートに対するユーザーの回答を含む TableA というテーブルがあります。不注意によるミスにより、一部のユーザーが重複した回答を送信してしまいました。私たちの目的は、これらの重複を削除し、残りの 1 行を確実に保持することです。

解決策 1: 一意のインデックス

1 つの方法は、関連する列に一意のインデックスを追加することです。表Aの。これにより、これらのフィールドの一意性が強制され、さらなる重複の挿入が防止されます。

これを実現するには、次のクエリを実行します。

ALTER IGNORE TABLE `TableA`   
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
ログイン後にコピー

解決策 2: 主キーと削除

あるいは、テーブルに主キーを作成し、特定のクエリを利用して識別および削除することもできます。

主キーを作成するには、次のクエリを使用できます:

ALTER TABLE `TableA` ADD PRIMARY KEY (`member_id`, `quiz_num`, `question_num`, `answer_num`);
ログイン後にコピー

主キーを作成したら、次のクエリを使用して重複を削除できます:

DELETE FROM member  
WHERE id IN (SELECT * 
             FROM (SELECT id FROM member 
                   GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1)
                  ) AS A
            );
ログイン後にコピー

以上が一時テーブルを使用せずに MySQL テーブルから重複レコードを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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