Menghapuskan Baris Pendua dalam MySQL Menggunakan SQL
Baris pendua dalam pangkalan data MySQL boleh menyebabkan ketidakkonsistenan data dan isu prestasi. Artikel ini memfokuskan pada mengalih keluar baris pendua daripada jadual (cth., 'pekerjaan') berdasarkan lajur 'site_id', 'title' dan 'company'.
Walaupun pertanyaan SQL yang kompleks boleh mengenal pasti pendua, kaedah yang lebih cekap memanfaatkan keupayaan pengindeksan MySQL. Ini melibatkan penciptaan indeks unik, yang secara automatik mengendalikan penyingkiran baris pendua.
Pendekatan Indeks Unik (Ditamatkan)
Sebelum ini, penyelesaian mudah yang terlibat menggunakan pernyataan ALTER IGNORE TABLE
dengan indeks UNIQUE
:
<code class="language-sql">ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company);</code>
Kaedah ini secara automatik menjatuhkan baris pendua semasa penciptaan indeks. Walau bagaimanapun, pendekatan ini ditamatkan dalam MySQL 5.6 dan dialih keluar dalam versi kemudian.
Kelebihan (untuk versi MySQL yang lebih lama):
Penyelesaian MySQL Moden (5.7 dan lebih baru):
Untuk MySQL 5.7 dan lebih baru, kaedah ALTER IGNORE TABLE
tidak lagi disokong. Sebaliknya, gunakan pernyataan DELETE
dengan subkueri untuk mengalih keluar pendua. Ini memerlukan pendekatan yang lebih kompleks tetapi memastikan keserasian dengan versi MySQL semasa. Penyelesaian biasa akan melibatkan mengenal pasti pendua dengan klausa GROUP BY
dan klausa HAVING
untuk menapis kiraan yang lebih besar daripada 1, kemudian memadamkan baris tambahan berdasarkan kriteria tertentu (mis., mengekalkan baris dengan ID terendah). Pertanyaan yang tepat bergantung pada keperluan khusus anda dan struktur jadual. Rujuk dokumentasi MySQL untuk contoh terperinci pendekatan ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Baris Pendua dengan Cekap dalam MySQL Menggunakan Hanya SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!