Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam T-SQL Semasa Menyimpan Satu Contoh?
T-SQL: Kosongkan baris berlebihan sambil mengekalkan rekod baris tunggal
Mengekalkan integriti data adalah penting dan menghapuskan baris pendua ialah langkah kritikal. Dalam kes ini, rekod pendua berlaku kerana ralat kemasukan data. Matlamat anda adalah untuk menghapuskan baris berlebihan ini, tetapi anda perlu tepat - memastikan anda mengekalkan satu pendua.
Penyelesaian: Gunakan CTE dan ROW_NUMBER()
Dalam SQL 2005 atau lebih baru, anda boleh menggunakan ungkapan jadual biasa (CTE) dengan klausa ROW_NUMBER() OVER untuk mencapai matlamat anda. CTE bertindak sebagai penapis, mengasingkan data yang berkaitan, manakala fungsi ROW_NUMBER() memberikan nombor jujukan kepada setiap baris dalam kumpulan partition yang telah ditetapkan (dalam kes ini, lajur kunci).
Teknik ini membolehkan anda mengasingkan baris pendua berdasarkan kriteria yang anda inginkan. Dengan menambahkan klausa WHERE yang mengandungi syarat yang menyemak sama ada nombor baris lebih besar daripada 1, anda boleh menentukan dan memadamkan baris berlebihan.
Pencapaian
<code class="language-sql">WITH cte AS ( SELECT [foo], [bar], row_number() OVER(PARTITION BY [foo], [bar] ORDER BY [baz]) AS [rn] FROM [TABLE] ) DELETE FROM cte WHERE [rn] > 1</code>
Pilihan penyesuaian
Klausa ORDER BY dalam CTE memberikan fleksibiliti dalam menyusun baris. Jika matlamat anda adalah untuk mengekalkan baris terbaharu, susun keputusan dalam tertib menurun mengikut lajur masa tarikh yang berkaitan (contohnya, ORDER BY [baz] DESC). Perlu diingat bahawa pemilihan kriteria pengisihan sepenuhnya disesuaikan dengan keperluan khusus anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam T-SQL Semasa Menyimpan Satu Contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!