Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod Pendua dalam Pelayan SQL Berdasarkan Medan Tertentu Menggunakan Pertanyaan Tunggal?

Bagaimana untuk Memadam Rekod Pendua dalam Pelayan SQL Berdasarkan Medan Tertentu Menggunakan Pertanyaan Tunggal?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-12 12:06:44543semak imbas

How to Delete Duplicate Records in SQL Server Based on a Specific Field Using a Single Query?

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:

  • Fungsi tetingkap row_number() digunakan untuk menetapkan kedudukan angka - bermula dari 1 - kepada setiap rekod dalam setiap partition (ditakrifkan oleh EmployeeName).
  • Pernyataan padam kemudian menyasarkan baris dengan rn lebih besar daripada 1, yang merupakan pendua.

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!

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