Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadamkan Baris Pendua dalam Jadual Tanpa ID Unik?
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>
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>
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>
Mari pecahkan pertanyaan ini:
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!