Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memadam Baris Pendua daripada Jadual SQL tanpa Ralat \"Anda tidak boleh menentukan jadual sasaran...\"?

Bagaimana untuk Memadam Baris Pendua daripada Jadual SQL tanpa Ralat \"Anda tidak boleh menentukan jadual sasaran...\"?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 01:12:01927semak imbas

How to Delete Duplicate Rows from an SQL Table without the

Memadamkan Baris Pendua daripada Jadual SQL

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!

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