Memadamkan Rekod Pendua Tanpa Kunci Utama dalam SQL
Rekod pendua boleh menimbulkan cabaran dalam integriti data, yang membawa kepada keputusan yang tidak tepat dan ketidakkonsistenan data. Dalam situasi di mana jadual tidak mempunyai kunci utama, mengenal pasti dan mengalih keluar rekod pendua boleh menjadi lebih kompleks.
Jika tiada kunci utama, satu pendekatan untuk menghapuskan rekod pendua ialah mengenal pasti rekod pendua yang mempunyai nilai yang sepadan dalam medan tertentu , seperti ID pekerja dan nombor Keselamatan Sosial. Untuk mencapai matlamat ini, subkueri boleh digunakan untuk membahagikan jadual berdasarkan kriteria yang diingini dan memberikan nombor jujukan kepada setiap rekod.
Pernyataan DELETE kemudiannya boleh digunakan untuk memadam rekod dengan nilai medan pendua dengan menapis pada yang mempunyai nombor baris lebih daripada 1. Ini memastikan bahawa hanya kejadian pertama bagi setiap set nilai unik adalah dikekalkan.
Pertimbangkan pertanyaan SQL berikut:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
Dalam pertanyaan ini, subkueri mengira nombor baris untuk setiap rekod, dipisahkan oleh medan EmpId, EmpName dan EmpSSN. Klausa ORDER BY memastikan bahawa nombor baris diberikan secara berurutan. Pernyataan DELETE kemudian mengalih keluar sebarang rekod dengan nombor baris lebih besar daripada 1, dengan berkesan memadamkan pendua.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Pendua dalam Jadual SQL Tanpa Kunci Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!