Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam T-SQL Berdasarkan Lajur Utama?

Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam T-SQL Berdasarkan Lajur Utama?

Barbara Streisand
Barbara Streisandasal
2025-01-15 16:10:43318semak imbas

How to Efficiently Delete Duplicate Rows in T-SQL Based on Key Columns?

Padamkan baris pendua dalam T-SQL dengan cekap berdasarkan lajur kunci utama

Soalan:

Disebabkan ralat semasa pembuatan data, jadual mengandungi sejumlah besar baris pendua. Matlamatnya adalah untuk menghapuskan baris berlebihan sambil mengekalkan satu baris untuk setiap gabungan unik lajur kunci utama. Walau bagaimanapun, jadual mengandungi beberapa lajur yang tidak berkaitan dengan soalan dan mempunyai data yang sedikit berbeza dan mesti diabaikan.

Penyelesaian:

Untuk SQL Server 2005 dan ke atas, anda boleh menggunakan fungsi OVER() dan ungkapan jadual biasa (CTE) untuk mengalih keluar baris pendua dengan cekap.

Penyataan CTE dan DELETE:

<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 cte WHERE [rn] > 1</code>

Arahan:

  • CTE mencipta subset baris yang diisih berdasarkan lajur foo dan bar.
  • Klausa ORDER BY baz adalah pilihan dan membenarkan pesanan dalam setiap partition (kumpulan lajur kunci utama).
  • Pernyataan DELETE memadamkan semua baris dalam CTE dengan kedudukan lebih besar daripada 1, dengan berkesan menghapuskan pendua sambil mengekalkan satu baris untuk setiap gabungan lajur kunci utama.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam T-SQL Berdasarkan Lajur Utama?. 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