Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam Jadual Sambil Mengekalkan Kejadian Pertama Setiap Gabungan Unik?

Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam Jadual Sambil Mengekalkan Kejadian Pertama Setiap Gabungan Unik?

Linda Hamilton
Lepaskan: 2025-01-23 01:31:10
asal
882 orang telah melayarinya

How Can I Delete Duplicate Rows in a Table While Preserving the First Occurrence of Each Unique Combination?

Kekalkan baris unik: kendalikan pengalihan keluar pendua

Dalam bidang operasi pangkalan data, selalunya perlu memadamkan baris pendua daripada jadual. Walau bagaimanapun, tugas ini boleh menjadi mencabar apabila baris kekurangan pengecam unik. Soalan ini membincangkan situasi ini, mencari penyelesaian untuk menghapuskan baris pendua sambil mengekalkan kejadian pertama setiap gabungan unik.

Pertanyaan:

Pertanyaan yang diberikan pada mulanya cuba memadamkan baris berdasarkan kehadiran nilai id pendua. Walau bagaimanapun, kaedah ini gagal kerana tiada pengecam unik sedemikian wujud dalam jadual. Sebaliknya, penyelesaian yang lebih mantap diperlukan untuk mengendalikan pengesanan dan pengalihan keluar pendua tanpa bergantung pada pengecam baris yang jelas.

Gunakan CTE dan ROW_NUMBER:

Cara yang berkesan untuk mencapai matlamat ini ialah menggunakan ungkapan jadual biasa (CTE) bersama-sama dengan fungsi ROW_NUMBER(). Teknik CTE mencipta CTE jadual sementara yang mengandungi lajur asal dan lajur tambahan RN yang mewakili nombor baris untuk setiap gabungan nilai col1.

Pembahagian dan nombor:

Fungsi ROW_NUMBER() membenarkan pembahagian baris berdasarkan lajur col1 dan menetapkan nombor baris dalam tertib menaik dalam setiap partition. Oleh itu, baris pendua dalam partition yang sama akan mempunyai nilai RN unik lebih daripada 1.

Proses pemadaman:

Dengan memanfaatkan CTE, kami boleh mengasingkan dan mengalih keluar mana-mana baris dengan nilai RN lebih besar daripada 1, dengan berkesan mengalih keluar pendua sambil mengekalkan tika pertama bagi setiap gabungan unik.

Keputusan:

Selepas menggunakan pertanyaan yang diubah suai, hasil yang diharapkan dicapai:

<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

Fungsi lanjutan:

Pertanyaan boleh diperibadikan selanjutnya untuk mengendalikan pengesanan dan pengalihan keluar pendua merentas berbilang lajur dengan hanya menambahkan lajur ini pada klausa PARTITION BY. Sebagai contoh, untuk mempertimbangkan col1 dan col2 untuk pengenalan pendua, klausa PARTITION BY akan menjadi:

<code>ROW_NUMBER()OVER(PARTITION BY Col1, Col2 ORDER BY OrderColumn)</code>
Salin selepas log masuk

Kaedah ini menyediakan cara yang boleh dipercayai dan cekap untuk menghapuskan baris pendua berdasarkan lajur yang dipilih, memberikan fleksibiliti dalam menyesuaikan diri dengan keperluan data yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Padamkan Baris Pendua dalam Jadual Sambil Mengekalkan Kejadian Pertama Setiap Gabungan 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