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!