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

Bagaimana untuk Memadam Baris Pendua dalam SQL Tanpa Pengecam Unik?

Patricia Arquette
Patricia Arquetteasal
2025-01-23 01:37:08930semak imbas

How to Delete Duplicate Rows in SQL Without a Unique Identifier?

Alih keluar baris pendua tanpa pengecam unik

Untuk mengalih keluar baris pendua daripada jadual yang tidak mempunyai lajur pengecam unik, anda boleh menggunakan CTE (ungkapan jadual biasa) bersama-sama dengan ROW_NUMBER().

Penyelesaian:

Sila pertimbangkan pertanyaan berikut:

<code class="language-sql">WITH CTE AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1;</code>

Pertanyaan ini melakukan perkara berikut:

  1. Cipta CTE: Ia mencipta CTE bernama "CTE", memberikan setiap baris ROW_NUMBER() yang unik, dikira bermula dari 1 lajur "col1" dalam setiap partition nilai unik .
  2. Kenal pasti pendua: Pertanyaan mengenal pasti baris pendua dengan menyemak sama ada ROW_NUMBER() lebih besar daripada 1.
  3. Alih Keluar Pendua: Ia kemudian mengalih keluar semua baris dalam CTE yang mempunyai nilai ROW_NUMBER() pendua.

Keputusan:

Hasil pertanyaan ialah jadual dengan baris pendua dialih keluar, hanya mengekalkan kejadian pertama bagi setiap baris unik. Ini dicapai tanpa memerlukan lajur pengecam unik dalam jadual asal.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dalam SQL Tanpa Pengecam Unik?. 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