Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Memadam Rekod Pendua dalam Pelayan SQL Menggunakan T-SQL?
Mengalih Keluar Baris Pendua dalam Pelayan SQL dengan T-SQL
Panduan ini menunjukkan cara mengalih keluar baris pendua secara berkesan daripada jadual SQL Server menggunakan T-SQL, memfokuskan pada lajur tertentu. Mari kita gunakan jadual Employee
dengan lajur EmployeeName
sebagai contoh. Objektifnya adalah untuk mengekalkan hanya satu contoh bagi setiap nama pekerja yang unik.
Kaedah yang mantap memanfaatkan fungsi tetingkap. Pertanyaan berikut menyelesaikannya:
<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>
Pertanyaan ini menggunakan ROW_NUMBER()
untuk menetapkan kedudukan unik kepada setiap baris dalam setiap kumpulan (pembahagian) nilai EmployeeName
yang sama. Klausa PARTITION BY EmployeeName
mengumpulkan baris dan ORDER BY empId
menentukan susunan kedudukan dalam setiap kumpulan (dengan andaian empId
ialah pengecam unik). rn
mewakili pangkat.
Klausa WHERE rn > 1
menyasarkan baris dengan kedudukan lebih besar daripada 1 dalam setiap kumpulan, dengan berkesan memadamkan semua pendua kecuali kejadian pertama (yang mempunyai pangkat 1).
Sebelum melaksanakan pernyataan DELETE
, pratonton baris yang akan terjejas adalah penting untuk melihat. Gantikan DELETE
dengan SELECT
untuk mencapai ini:
<code class="language-sql">SELECT * FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
Ini membolehkan pengesahan sebelum mengalih keluar sebarang data secara kekal.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Memadam Rekod Pendua dalam Pelayan SQL Menggunakan T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!