Saya akan melakukannya dengan cara berikut:
-
Buat tabel sementara dari tabel yang ada:
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
Isi tabel temp hanya dengan catatan yang Anda inginkan:
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
Kosongkan tabel
TRUNCATE TABLE table_with_dupes_in_it
-
Kembalikan data dari tabel temp ke tabel asli
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
Bersihkan
DROP TEMPORARY TABLE data_to_keep
Harap diperhatikan bahwa ini dapat menghabiskan banyak memori dan/atau penyimpanan jika tabel yang dimaksud adalah tabel yang besar. Jika ini adalah tabel besar, saya akan cenderung menggunakan tabel nyata daripada tabel sementara agar tidak memakan banyak memori di server DB Anda.
EDIT UNTUK MENAMBAHKAN:
Jika Anda hanya khawatir tentang penipuan sebagian (baris di mana hanya beberapa data yang identik dengan data yang dimasukkan sebelumnya), maka Anda akan ingin menggunakan GROUP BY. Saat Anda menggunakan GROUP BY, Anda dapat membatasi MySQL untuk mengembalikan hanya satu baris yang berisi data yang diberikan, bukan semuanya.
SELECT *
FROM table
GROUP BY column_name
Anda juga harus mempertimbangkan untuk menggunakan indeks UNIK pada kolom yang Anda inginkan untuk tidak menyimpan data duplikat, ini akan mencegah pengguna memasukkan data duplikat.