Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Baris Pendua dalam MySQL Semasa Menyimpan Satu?

Bagaimana untuk Memadam Baris Pendua dalam MySQL Semasa Menyimpan Satu?

Barbara Streisand
Barbara Streisandasal
2025-01-23 13:26:10465semak imbas

How to Delete Duplicate Rows in MySQL While Keeping One?

Cara mengalih keluar baris pendua daripada MySQL (simpan satu baris)

Deduplikasi adalah penting apabila mengekalkan pangkalan data yang bersih dan cekap. Walaupun memilih nilai unik menggunakan pertanyaan seperti SELECT DISTINCT adalah mudah, mengalih keluar pendua melalui operasi DELETE memerlukan pendekatan yang sedikit berbeza.

Gunakan DELETE untuk mengalih keluar pendua

Untuk mengalih keluar baris pendua daripada jadual sambil menyimpan salinan, anda boleh menggunakan dua DELETE variasi pertanyaan:

  1. Kekalkan baris dengan nilai ID terendah:

    <code class="language-sql">DELETE n1 FROM names n1, names n2
    WHERE n1.id > n2.id AND n1.name = n2.name</code>
  2. Kekalkan baris dengan nilai ID tertinggi:

    <code class="language-sql">DELETE n1 FROM names n1, names n2
    WHERE n1.id < n2.id AND n1.name = n2.name</code>

Perhatikan bahawa pertanyaan ini menggunakan cantuman dalaman (JOIN) untuk membandingkan baris berdasarkan lajur name. Mereka kemudiannya mengenal pasti dan mengalih keluar baris pendua berdasarkan syarat bahawa satu baris mempunyai nilai ID yang lebih tinggi atau lebih rendah daripada baris lain.

Nota:

  • Pastikan anda membuat salinan ujian jadual sebelum melaksanakan pertanyaan ini, kerana ia mungkin memadamkan semua baris jika digunakan secara salah.
  • Memasukkan syarat AND n1.id != n2.id dalam pertanyaan memastikan baris tidak dipadamkan jika mereka mempunyai nama yang sama tetapi nilai ID yang berbeza.

Alternatif untuk menggunakan INSERT:

Untuk jadual yang lebih besar, menggunakan DISTINCT dengan INSERT ialah cara yang lebih cekap untuk mengalih keluar pendua.

<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value)
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;</code>

Kaedah ini mencipta jadual baharu yang mengandungi hanya nilai unik, dengan berkesan mengalih keluar pendua.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dalam MySQL Semasa Menyimpan Satu?. 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