Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Memadam Rekod Pendua dalam Pelayan SQL Menggunakan T-SQL?

Bagaimana untuk Cekap Memadam Rekod Pendua dalam Pelayan SQL Menggunakan T-SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-12 11:57:43703semak imbas

How to Efficiently Delete Duplicate Records in SQL Server Using 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn