Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Baris Pendua dari Jadual MySQL?

Bagaimana untuk Memadam Baris Pendua dari Jadual MySQL?

DDD
DDDasal
2024-11-03 04:59:02979semak imbas

How to Delete Duplicate Rows from a MySQL Table?

Memadamkan Baris Pendua daripada Jadual MySQL

Apabila bekerja dengan set data yang besar, adalah penting untuk mengenal pasti dan mengalih keluar rekod pendua. Panduan ini akan menyediakan penyelesaian komprehensif untuk memadamkan baris pendua daripada jadual MySQL bernama "pekerja" yang terdiri daripada tiga medan: empid, empname dan empssn.

Mengenalpasti Rekod Pendua

Untuk mengenal pasti rekod pendua, anda boleh menggunakan pertanyaan berikut:

SELECT COUNT(empssn), empssn
FROM employee 
GROUP BY empssn
HAVING COUNT(empssn) > 1

Pertanyaan ini mengembalikan kiraan kejadian untuk setiap empssn unik. Klausa HAVING menapis baris dengan kiraan lebih daripada 1, dengan berkesan mengenal pasti nilai empssn pendua.

Memadam Rekod Pendua

Untuk memadamkan rekod pendua, kita boleh menggunakan pertanyaan berikut:

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT MIN(empid), empssn 
    FROM employee 
    GROUP BY empssn
);

Walau bagaimanapun, MySQL melemparkan ralat jika jadual sasaran ("pekerja") dinyatakan dalam kedua-dua DELETE dan klausa FROM subquery. Untuk mengatasinya, kita boleh membungkus subkueri dalam jadual terbitan, seperti berikut:

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT empid, empssn 
    FROM (
        SELECT MIN(empid) AS empid, empssn 
        FROM employee 
        GROUP BY empssn
    ) X
);

Pertanyaan yang diubah suai ini secara berkesan memadamkan rekod pendua sambil mengelakkan konflik jadual sasaran. Akibatnya, pangkalan data hanya mengekalkan rekod dengan empid minimum untuk setiap nilai empssn yang unik.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dari Jadual MySQL?. 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