Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadamkan Baris Pendua dalam Jadual Tanpa ID Unik?

Bagaimana untuk Memadamkan Baris Pendua dalam Jadual Tanpa ID Unik?

Barbara Streisand
Lepaskan: 2025-01-23 01:47:09
asal
369 orang telah melayarinya

How to Delete Duplicate Rows in a Table Without a Unique ID?

Alih keluar baris pendua tanpa ID unik

Bagaimanakah kita boleh mengalih keluar baris pendua jika tiada pengecam baris unik dalam jadual? Katakan kita mempunyai jadual dengan data berikut:

<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 |
|---|---|---|---|---|---|---|
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Salin selepas log masuk

Matlamat kami adalah untuk menghapuskan baris pendua, meninggalkan:

<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 |
|---|---|---|---|---|---|---|
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Salin selepas log masuk

Cara yang boleh dipercayai untuk mengelakkan masalah kehilangan ID unik ialah menggunakan ungkapan jadual biasa (CTE) dan fungsi ROW_NUMBER(). Gabungan ini membolehkan kami mengenal pasti baris mana yang harus dipadamkan:

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

Mari pecahkan pertanyaan ini:

  • CTE bernama "CTE" menggunakan fungsi ROW_NUMBER() untuk mengira nombor baris berdasarkan setiap nilai yang berbeza dalam lajur "col1" semasa membahagikan mengikut lajur itu.
  • Pernyataan
  • DELETE kemudian memadamkan baris dengan nombor baris (RN) lebih besar daripada 1, dengan itu mengalih keluar sebarang baris pendua.

Nota: Hasil yang anda berikan dalam siaran asal anda mungkin berbeza-beza kerana kemungkinan kesilapan menaip. Output di atas mewakili hasil yang dijangkakan.

Fleksibiliti teknik ini membolehkan kemasukan berbilang lajur dalam klausa PARTITION BY, membolehkan pengesanan pendua berdasarkan gabungan berbilang kriteria.

Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Baris Pendua dalam Jadual Tanpa ID Unik?. 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