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
Lepaskan: 2025-01-04 03:46:40
asal
1019 orang telah melayarinya

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`);
Salin selepas log masuk

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`);
Salin selepas log masuk

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
            );
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan