Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadam Baris Pendua dalam Pelayan SQL Tanpa Kunci Unik?

Bagaimana untuk Memadam Baris Pendua dalam Pelayan SQL Tanpa Kunci Unik?

Susan Sarandon
Lepaskan: 2025-01-23 01:51:09
asal
975 orang telah melayarinya

How to Delete Duplicate Rows in SQL Server Without a Unique Key?

Mengalih Keluar Baris Pendua dalam Pelayan SQL dengan Cekap: Pendekatan CTE

Apabila berurusan dengan jadual SQL Server yang tidak mempunyai kunci unik, menghapuskan baris pendua memerlukan pendekatan strategik. Ini boleh dicapai dengan berkesan menggunakan ungkapan jadual biasa (CTE) bersama-sama dengan fungsi ROW_NUMBER().

Inilah penyelesaian yang menunjukkan teknik ini:

WITH RowNumberedRows AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM RowNumberedRows
WHERE RN > 1;
Salin selepas log masuk

Penjelasan Terperinci:

CTE, dinamakan dengan tepat RowNumberedRows, memberikan nombor baris unik (RN) kepada setiap baris dalam jadual. Fungsi ROW_NUMBER() membahagikan baris berdasarkan lajur col1, memberikan nombor berjujukan dalam setiap partition. Ini memastikan kejadian pertama setiap kumpulan pendua menerima RN 1.

Pernyataan DELETE kemudian menyasarkan CTE, mengalih keluar semua baris dengan RN lebih besar daripada 1. Ini hanya meninggalkan baris pertama setiap set pendua, dengan berkesan mengalih keluar pendua.

Contoh:

Menggunakan pertanyaan ini untuk sampel data menghasilkan hasil berikut:

COL1 COL2 COL3 COL4 COL5 COL6 COL7
john 1 1 1 1 1 1
sally 2 2 2 2 2 2

Perhatikan bahawa baris "john" pendua telah berjaya dihapuskan.

Kebolehsuaian kaedah ini patut diberi perhatian. Dengan melaraskan lajur pembahagian dalam fungsi ROW_NUMBER() (cth., PARTITION BY col1, col2), anda boleh menentukan keunikan berdasarkan berbilang lajur seperti yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dalam Pelayan SQL Tanpa Kunci Unik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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