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

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

Susan Sarandon
リリース: 2024-12-26 12:26:10
オリジナル
231 人が閲覧しました

How to Remove Duplicate Rows from MySQL Tables Without Using Temporary Tables?

一時テーブルを使用しない MySQL テーブルからの重複のパージ

MySQL テーブルには、データベースを混乱させ、データの整合性を損なう可能性がある重複レコードが含まれることがよくあります。これらの重複を削除することは、データの正確性を維持し、クエリのパフォーマンスを向上させるために非常に重要です。この記事では、一時テーブルを使用せずに重複レコードを排除する効率的な方法について説明します。

一意のインデックスの作成

最も簡単な方法には、テーブル内の一意性を定義する列に一意のインデックスを作成することが含まれます。 TableA テーブルの場合、次のインデックスにより、member_id、quiz_num、question_num、answer_num の組み合わせが一意であることが保証されます:

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

インデックスが作成されると、MySQL は自動的に整合性を維持し、重複レコードが作成されるのを防ぎます。

主キーの削除

または、主キーを追加しますテーブルは重複した挿入を防ぐこともできます。次のクエリは、主キーに基づいて重複レコードを削除します。

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
);
ログイン後にコピー

DELETE ステートメントは、id 列に基づいてレコードを削除し、同じ一意の列の組み合わせを持つレコードが 1 つだけ残るようにします。

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

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