Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod Pendua dalam MySQL Tanpa Menggunakan Jadual Sementara?

Bagaimana untuk Memadam Rekod Pendua dalam MySQL Tanpa Menggunakan Jadual Sementara?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 11:33:10553semak imbas

How to Delete Duplicate Records in MySQL Without Using Temporary Tables?

Memadam Rekod Pendua daripada Jadual MySQL tanpa Jadual Sementara

Mengekalkan integriti data dalam pangkalan data MySQL adalah penting dan mengalih keluar rekod pendua selalunya tugas yang perlu. Banyak penyelesaian wujud untuk masalah ini, tetapi sesetengahnya mungkin melibatkan penggunaan jadual sementara, yang boleh intensif sumber. Artikel ini membentangkan kaedah alternatif untuk memadam rekod pendua tanpa menggunakan jadual sementara.

Menggunakan Indeks Unik

Jika jadual tidak mempunyai lajur kunci utama, anda boleh mencipta indeks unik pada lajur yang mengenal pasti rekod secara unik. Dalam kes ini, id_ahli lajur, nombor_kuiz, nombor_soalan dan nombor_jawapan hendaklah membentuk indeks unik. Dengan menambahkan indeks ini, pangkalan data akan menguatkuasakan keunikan secara automatik, menghalang rekod pendua daripada dimasukkan pada masa hadapan.

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

Menggunakan Kunci Utama dan Subkueri

Sebagai alternatif, anda boleh menambah kunci utama pada jadual dan menggunakan subkueri untuk mengenal pasti dan memadam rekod pendua. Untuk menambah kunci utama, laksanakan pertanyaan berikut:

ALTER TABLE `TableA`
ADD PRIMARY KEY (`id`);

Setelah kunci utama tersedia, anda boleh menggunakan pertanyaan berikut untuk memadamkan rekod pendua:

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 mula-mula mengenal pasti rekod pendua menggunakan subquery dan kemudian mengeluarkannya daripada jadual. Lajur id digunakan untuk memastikan sekurang-kurangnya satu rekod dikekalkan untuk setiap set pendua.

Memilih Kaedah yang Sesuai

Kedua-dua kaedah secara berkesan mengalih keluar rekod pendua tanpa jadual sementara . Pilihan antara mereka bergantung pada keperluan khusus dan struktur jadual. Jika sisipan rekod pendua di masa hadapan adalah kebimbangan, mencipta indeks unik adalah disyorkan. Jika tidak, menggunakan kunci utama dan subkueri boleh menjadi penyelesaian yang cekap untuk penyingkiran pendua sekali.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Pendua dalam 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