Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam MySQL Tanpa Menerima Ralat?

Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam MySQL Tanpa Menerima Ralat?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 03:02:29931semak imbas

How Can I Delete Duplicate Rows in MySQL Without Receiving an Error?

Memadamkan Baris Pendua dalam MySQL: Trik Jadual Unik

Berurusan dengan rekod pendua dalam pangkalan data boleh menjadi titik kesakitan yang biasa. Dalam MySQL, pemadaman pendua ini boleh dicapai melalui satu siri langkah. Mari kita jalani senario tertentu dan atasi kemungkinan perangkap di sepanjang jalan.

Andaikan kita mempunyai jadual bernama "pekerja" dengan medan 'empid', 'empname' dan 'empssn'. Untuk mengenal pasti rekod pendua, kami melaksanakan pertanyaan untuk mengira kejadian setiap 'empssn':

<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>

Pertanyaan ini akan mengembalikan baris yang menunjukkan 'empssn' mana yang muncul lebih daripada sekali.

Seterusnya, kami cuba memadamkan rekod pendua menggunakan pertanyaan berikut:

<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);</code>

Malangnya, pertanyaan ini mungkin menghadapi ralat: "Anda tidak boleh menentukan 'pekerja' jadual sasaran untuk kemas kini dalam klausa FROM."

Untuk memintas ralat ini, kami boleh menggunakan teknik yang melibatkan pembalut pertanyaan dalam dalam jadual terbitan:

<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT empid, empssn FROM (SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn) X);</code>

Jadual terbitan ini berkesan bertindak sebagai jadual sementara, membolehkan kami merujuk sasaran jadual 'pekerja' dalam kedua-dua pernyataan DELETE dan klausa FROM.

Dengan melaksanakan helah ini, kami boleh berjaya memadamkan rekod pendua daripada jadual 'pekerja'. Penyelesaian ini bukan sahaja menyelesaikan halangan teknikal tetapi juga memberikan pemahaman yang lebih mendalam tentang manipulasi pangkalan data dalam MySQL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam MySQL Tanpa Menerima Ralat?. 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