Bagaimana untuk Mengeluarkan Pendua dari Jadual Menggunakan Indeks Unik dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-10-25 07:46:02
asal
731 orang telah melayarinya

How to Remove Duplicates from a Table Using a Unique Index in MySQL?

Mengalih Keluar Pendua dengan Indeks Unik

Jika anda mempunyai jadual besar dengan rekod pendua dan anda mahu mengalih keluarnya dengan mencipta indeks yang unik, anda perlu sedar tentang kemungkinan akibat.

Jika anda cuba menambah indeks unik pada jadual yang sudah mengandungi pendua, operasi akan gagal disebabkan oleh ralat kunci pendua. Ini kerana indeks unik menguatkuasakan keunikan data yang terkandung di dalamnya.

Walau bagaimanapun, terdapat penyelesaian untuk masalah ini. Anda boleh menggunakan pengubah suai IGNORE apabila mencipta indeks unik. Ini akan mengarahkan MySQL untuk mengabaikan sebarang nilai pendua dan hanya memasukkan yang unik.

<code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D) IGNORE;</code>
Salin selepas log masuk

Menggunakan pengubah suai IGNORE akan mengalih keluar pendua, tetapi adalah penting untuk ambil perhatian bahawa ia tidak menyatakan baris mana yang akan disimpan . MySQL akan sewenang-wenangnya memilih satu baris untuk setiap pendua dan membuang yang lain.

Jika anda menggunakan MySQL versi 5.7.4 atau lebih tinggi, pengubahsuai IGNORE untuk ALTER TABLE telah dialih keluar dan akan menyebabkan ralat. Dalam kes ini, anda boleh menggunakan penyelesaian berikut:

  1. Salin data ke dalam jadual sementara.
  2. Potong jadual asal.
  3. Buat indeks UNIK pada jadual asal.
  4. Masukkan kembali data ke dalam jadual asal menggunakan INSERT IGNORE.
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * from tmp_data;
DROP TABLE tmp_data;</code>
Salin selepas log masuk

Menggunakan INSERT IGNORE akan mengabaikan sebarang nilai pendua dan hanya memasukkan yang unik. Apabila data telah dimasukkan, jadual sementara boleh digugurkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Pendua dari Jadual Menggunakan Indeks Unik dalam MySQL?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!