Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menghapuskan Baris Pendua Semasa Mengekalkan Entri Asal dalam Jadual?

Bagaimana untuk Menghapuskan Baris Pendua Semasa Mengekalkan Entri Asal dalam Jadual?

Barbara Streisand
Lepaskan: 2024-10-31 19:12:29
asal
737 orang telah melayarinya

How to Eliminate Duplicate Rows While Preserving the Original Entry in a Table?

Menghapuskan Baris Pendua Sambil Mengekalkan Keaslian

Soalan:

Mengekalkan integriti data adalah penting, dan selalunya, entri pendua boleh timbul daripada penyerahan pengguna. Dalam senario di mana entri pendua wujud berdasarkan medan tertentu, seperti subscriberEmail, objektifnya adalah untuk menghapuskan pendua ini, hanya mengekalkan entri asal. Bagaimanakah ini boleh dicapai dengan cekap tanpa menggunakan pertukaran jadual?

Jawapan:

Memandangkan jadual mengandungi pengecam unik untuk setiap baris, pendekatan mudah boleh diguna pakai:

<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id</code>
Salin selepas log masuk

Penjelasan:

Pertanyaan ini memanfaatkan kewujudan ID unik untuk mengenal pasti rekod asal. Dengan menyertai jadual terhadap dirinya sendiri menggunakan medan subscriberEmail dan penapisan berdasarkan ID, ia berkesan menandakan rekod pendua sebagai rekod yang mempunyai ID yang lebih tinggi daripada yang asal. Pendua yang ditag ini kemudiannya dipadamkan.

Untuk meningkatkan lagi prestasi pertanyaan, pertimbangkan untuk menggunakan indeks pada lajur subscriberEmail. Ini memastikan pengambilan semula cepat rekod berdasarkan medan ini, menjadikan pertanyaan lebih cekap. Dengan mengisytiharkan lajur subscriberEmail sebagai lajur terindeks UNIK, ia juga boleh membantu menghalang entri pendua daripada disisipkan pada masa hadapan.

Atas ialah kandungan terperinci Bagaimana untuk Menghapuskan Baris Pendua Semasa Mengekalkan Entri Asal dalam Jadual?. 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