Rumah > Artikel > pangkalan data > Bagaimana untuk Memadam Baris Pendua daripada Jadual SQL tanpa Ralat \"Anda tidak boleh menentukan jadual sasaran...\"?
Dalam pengurusan pangkalan data, selalunya perlu mengalih keluar rekod pendua daripada jadual. MySQL menyediakan pelbagai cara untuk mencapainya.
Satu pendekatan biasa ialah mengenal pasti baris pendua menggunakan pertanyaan seperti:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
Pertanyaan ini mengenal pasti baris dengan nilai pendua dalam lajur empssn. Untuk memadamkan pendua ini, anda boleh menggunakan pertanyaan berikut:
DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);
Walau bagaimanapun, pendekatan ini boleh mengakibatkan ralat "Anda tidak boleh menentukan jadual sasaran 'pekerja' untuk kemas kini dalam klausa FROM." Untuk menangani perkara ini, anda boleh membungkus subkueri dalam jadual terbitan:
DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT empid, empssn FROM (SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn) X);
Menggunakan jadual terbitan membolehkan anda merujuk jadual asal dalam subkueri tanpa ralat. Pendekatan ini berjaya memadamkan baris pendua dalam jadual pekerja sambil mengekalkan struktur data asal.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua daripada Jadual SQL tanpa Ralat \"Anda tidak boleh menentukan jadual sasaran...\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!