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
Lepaskan: 2024-12-26 11:33:10
asal
572 orang telah melayarinya

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

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

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

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 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