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!