Jadual MySQL selalunya mengandungi rekod pendua yang boleh mengeruhkan pangkalan data dan menjejaskan integriti data. Memadamkan pendua ini adalah penting untuk mengekalkan ketepatan data dan meningkatkan prestasi pertanyaan. Artikel ini meneroka pendekatan yang cekap untuk menghapuskan rekod pendua tanpa menggunakan jadual sementara.
Kaedah paling mudah melibatkan mencipta indeks unik pada lajur yang mentakrifkan keunikan dalam jadual. Untuk jadual JadualA, indeks berikut memastikan gabungan id_ahli, nombor_kuiz, nombor_soalan dan nombor_jawapan adalah unik:
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Setelah indeks dibuat, MySQL secara automatik mengekalkan integritinya, menghalang rekod pendua daripada menjadi dimasukkan.
Sebagai alternatif, menambahkan kunci utama pada jadual juga boleh menghalang sisipan pendua. Pertanyaan berikut memadamkan rekod pendua berdasarkan kunci utama:
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 );
Pernyataan DELETE mengalih keluar rekod berdasarkan lajur id, memastikan hanya satu rekod dengan gabungan unik lajur yang sama kekal.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Baris Pendua dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!