Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengeluarkan Rekod Pendua dengan Cekap dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?

Bagaimanakah Saya Boleh Mengeluarkan Rekod Pendua dengan Cekap dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?

Susan Sarandon
Susan Sarandonasal
2025-01-04 03:46:401089semak imbas

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

Penyingkiran Rekod Pendua yang Cekap dalam MySQL tanpa Jadual Temp

Menemui rekod pendua dalam pangkalan data boleh menjadi satu cabaran, terutamanya tanpa kunci utama . Walau bagaimanapun, terdapat teknik yang berkesan untuk menangani isu ini.

Dalam kes kami, kami mempunyai jadual yang dipanggil TableA yang mengandungi respons pengguna kepada soal selidik. Disebabkan ralat yang tidak disengajakan, sesetengah pengguna telah menyerahkan jawapan pendua. Objektif kami adalah untuk mengalih keluar pendua ini sambil memastikan satu baris yang tinggal berterusan.

Penyelesaian 1: Indeks Unik

Satu pendekatan ialah menambah indeks unik pada lajur yang berkaitan dalam JadualA. Ini akan menguatkuasakan keunikan medan ini, menghalang pemasukan pendua tambahan.

Untuk mencapai ini, laksanakan pertanyaan berikut:

ALTER IGNORE TABLE `TableA`   
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);

Penyelesaian 2: Kunci Utama dan Pemadaman

Sebagai alternatif, kita boleh mencipta kunci utama di atas meja dan menggunakan pertanyaan khusus untuk mengenal pasti dan mengalih keluar pendua.

Untuk mencipta kunci utama, kami boleh menggunakan pertanyaan ini:

ALTER TABLE `TableA` ADD PRIMARY KEY (`member_id`, `quiz_num`, `question_num`, `answer_num`);

Setelah kunci utama dipasang, kami boleh memadamkan pendua menggunakan ini pertanyaan:

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
            );

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Rekod Pendua dengan Cekap dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn