Cara Memadam Rekod Pendua daripada Jadual MySQL tanpa Jadual Sementara
Dalam konteks integriti data, berurusan dengan rekod pendua boleh menjadi satu tugas yang membingungkan. Pertimbangkan senario di mana jadual, JadualA, mengandungi berbilang entri yang sama disebabkan penyerahan dua kali secara tidak sengaja. Cabaran timbul apabila anda perlu membersihkan pendua ini sambil mengekalkan sekurang-kurangnya satu baris unik.
Pendekatan INDEKS UNIK:
Satu kaedah yang berkesan ialah menambah indeks unik pada lajur yang berkaitan:
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Indeks ini menguatkuasakan keunikan pada lajur yang ditentukan, memastikan tiada gabungan pendua boleh wujud. Akibatnya, percubaan untuk memasukkan rekod yang sama akan ditolak oleh pangkalan data.
Pendekatan Kunci Utama:
Sebagai alternatif, anda boleh memperkenalkan kunci utama dalam jadual. Kunci utama ialah pengecam unik yang membezakan setiap baris. Dengan menambahkannya pada struktur jadual sedia ada anda, anda boleh melaksanakan:
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 );
Pertanyaan ini mengenal pasti dan mengalih keluar baris pendua dengan membandingkan kiraan kumpulan mereka dan baris penyasaran dengan kiraan yang lebih besar daripada 1. Lajur id boleh mewakili sama ada kunci utama sedia ada anda atau kunci baharu yang ditambahkan semata-mata untuk tujuan ini.
Kedua-dua pendekatan menyediakan penyelesaian yang cekap kepada masalah rekod pendua dalam jadual MySQL anda, membolehkan anda mengekalkan integriti data tanpa memerlukan jadual sementara.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Rekod Pendua dari Jadual MySQL dengan Cekap Tanpa Menggunakan Jadual Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!