Padamkan rekod pendua dalam SQL Server berdasarkan medan tertentu
Andaikan terdapat jadual bernama "Pekerja" yang mengandungi lajur bernama "Nama Pekerja". Tugasnya adalah untuk memadam rekod berlebihan berdasarkan medan "EmployeeName" dan mendapatkan data berikut:
EmployeeName |
---|
Anand |
Anil |
Dipak |
Bagaimanakah saya boleh mencapai ini dengan satu pertanyaan menggunakan TSQL dalam SQL Server?
Penyelesaian menggunakan fungsi tetingkap:
Untuk menyelesaikan masalah ini, fungsi tetingkap adalah kaedah yang boleh dilaksanakan. Fungsi tetingkap membenarkan anda melakukan operasi pada set baris dalam partition yang ditakrifkan oleh klausa OVER. Dalam contoh ini, partition ditakrifkan oleh lajur "EmployeeName".
Pertanyaan berikut secara berkesan mengenal pasti dan mengalih keluar rekod pendua berdasarkan medan "Nama Pekerja":
<code class="language-sql">delete x from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
Penjelasan:
Lihat rekod yang dipadam:
Untuk pratonton rekod yang akan dipadamkan tanpa benar-benar melaksanakan kenyataan padam, gunakan pertanyaan pilih berikut:
<code class="language-sql">select * from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Pendua dalam Pelayan SQL Berdasarkan Medan Tertentu Menggunakan Pertanyaan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!