Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengalih keluar Baris Pendua dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?

Bagaimana untuk mengalih keluar Baris Pendua dari Jadual MySQL Tanpa Menggunakan Jadual Sementara?

Susan Sarandon
Susan Sarandonasal
2024-12-26 12:26:10231semak imbas

How to Remove Duplicate Rows from MySQL Tables Without Using Temporary Tables?

Membersihkan Pendua daripada Jadual MySQL tanpa Jadual Sementara

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.

Penciptaan Indeks Unik

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.

Pemadaman Kunci Utama

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!

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