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
Lepaskan: 2025-01-15 16:10:43
asal
371 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan