Cara menghapus data duplikat di mysql

Sesuai dengan judulnya, berikut adalah langkah – langkah yang bisa kalian pakai untuk menghapus data / record yang sama dalam suatu tabel di database MySQL hanya dengan satu Query saja. Pengetahuan ini akudapat dari http://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/

Berikut penjelasan singkatnya …

  1. Buka MySQL Manager, pilih database yang akan diolah, kemudian masukkan query berikut, misal ini aku mau menghapus dari tabel yang bernama “pelanggan”
    CREATE TABLE tabelBaru AS SELECT * FROM pelanggan WHERE 1 GROUP BY email;
    

    “email” itu adalah field yang digunakan sebagai acuan kita untuk membedakan data yang tidak sama

  2. Setelah itu hapus tabel pelanggan, bisa dengan klik kanan – hapus tabel, atau bisa juga dengan sintaks “DROP TABLE pelanggan”
  3. Kemudian rename table “tabelBaru” dengan nama table “pelanggan”
  4. Selesai, coba cek dah sekarang record tabelnya 😀

Semoga bermanfaat …

-7.338006112.690159

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)

Like this:

Like Loading...

Related

Sebuah catatan saya sadur dari stackoverflow, siapa tau ada yang membutuhkan bagaimana cara menghapus duplikat data pada table MySQL.

Dibawah ini adalah query sederhana bagaimana melakukan penghapusan data yang duplicate pada table MySQL. Terkadang query ini diperlukan saat kita ingin membersihkan data pada table yang memiliki data duplicate namun tetap ingin menyisakan satu data valid.

NB – You need to do this first on a test copy of your table!

When I did it, I found that unless I also included AND n1.id <> n2.id, it deleted every row in the table.

1) If you want to keep the row with the lowest id value: Ini adalah cara menghapus duplicate data namun menyisakan satu data dengan ID terendah.

DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name

2) If you want to keep the row with the highest id value: Ini adalah cara menghapus duplicate data namun menyisakan satu data dengan ID tertinggi.

DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name

 

Semoga dapat membantu dan bermanfaat.

  • TAGS
  • delete
  • duplicate
  • mySQL
  • query
  • remove
  • sql
  • table mysql

SHARE

Facebook

Twitter

Previous articleNaskah Lagu Indonesia Raya 3 Stanza

Next articleInformasi Jadwal Praktek Dokter RS Mata “Dr. YAP”

GULANGGULINGcom

http://www.gulangguling.com

Menulis untuk memberi Informasi. Bukan suka mengada-ada, tapi menulis yang semestinya. Menulis dengan hati untuk blog yang bertujuan memberi Informasi.

Mungkin ada beberapa MySQL tabel data duplikat catatan, dalam beberapa kasus kita membiarkan data ganda, tapi kadang-kadang kita perlu menghapus data ganda.

bab ini kita akan memperkenalkan bagaimana mencegah duplikasi data tabel data dan cara menghapus data ganda pada tabel data.


Mencegah duplikasi data dalam tabel muncul

Anda dapat mengatur field dalam tabel data MySQL untuk PRIMARY KEY (kunci utama) atau UNIK index (unik) untuk memastikan keunikan data.

Mari kita coba contoh: di bawah meja tanpa indeks dan kunci primer, sehingga meja memungkinkan beberapa catatan duplikat muncul.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Jika Anda ingin mengatur meja bidang first_name, data yang last_name tidak dapat diulang, Anda dapat mengatur mode kunci ganda utama untuk mengatur sifat unik dari data, jika Anda menyiapkan kunci utama ganda, maka nilai default kunci yang tidak dapat NULL, dapat diatur untuk NOT NULL. Sebagai berikut:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Jika kita menetapkan indeks unik, kemudian memasukkan data ganda, pernyataan SQL tidak akan dijalankan dengan sukses, dan membuang salah.

INSERT Abaikan INTO perbedaan adalah bahwa dengan INSERT INTO INSERT Abaikan mengabaikan data yang sudah ada dalam database, jika database tidak memiliki data, memasukkan data baru jika ada data, kemudian melewati data ini. Sehingga Anda dapat menyimpan data sudah ada dalam database, untuk mencapai tujuan data yang disisipkan di celah.

Contoh berikut menggunakan INSERT Abaikan INTO, tidak bisa salah setelah implementasi, tidak akan menyisipkan duplikat untuk tabel data:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT Abaikan INTO Ketika memasukkan data, setelah pengaturan keunikan catatan, jika Anda memasukkan data ganda, tidak akan kembali kesalahan, ia mengembalikan hanya sebagai peringatan. REPLACE INTO ke dalam catatan yang sama jika kehadiran utama atau unik, pertama dihapus. Kemudian memasukkan catatan baru.

set data adalah satu-satunya cara adalah dengan menambahkan indeks UNIK, sebagai berikut:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Statistik data ganda

Di bawah ini kita akan mengulangi catatan jumlah tabel di first_name dan last_name:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

Query di atas akan kembali person_tbl menduplikasi jumlah record dalam tabel. Dalam keadaan normal, nilai permintaan berulang, lakukan hal berikut:

  • Menentukan kolom berisi nilai dapat diulang.
  • Dalam daftar pilihan kolom penggunaan COUNT (*) yang tercantum dalam kolom.
  • Kolom tercantum dalam klausa GROUP BY.
  • Klausa HAVING menetapkan jumlah pengulangan lebih besar dari 1.

Filter data ganda

Jika Anda perlu membaca data yang unik dapat menggunakan kata kunci yang berbeda dalam laporan SELECT untuk menyaring data ganda.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl
    -> ORDER BY last_name;

Anda juga dapat menggunakan GROUP BY untuk membaca data dalam tabel tidak data ganda:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

deduplication

Jika Anda ingin menghapus data ganda dalam tabel data, Anda dapat menggunakan pernyataan SQL berikut:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Tentu saja, Anda juga dapat menambahkan INDEX (index) dan Arteri Sekunder KEY (kunci utama) metode sederhana ini dalam tabel data untuk menghapus duplikat catatan dalam tabel. Berikut caranya:

Bagaimana agar data pada tabel tidak ada data duplikat?

Dalam panel navigasi, klik kanan tabel yang berisi bidang, lalu klik tampilan desain. Pilih bidang yang ingin Anda pastikan memiliki nilai unik. Di panel properti bidang di bagian bawah tampilan desain tabel, pada tab umum , atur properti terindeks ke ya (tanpa duplikat). Simpan perubahan ke tabel Anda.

Select distinct untuk apa?

Fungsi Distinct mengevaluasi rumus di setiap rekaman tabel dan menghasilkan tabel satu kolom pada dengan nilai duplikat yang dihapus.

Bagaimana perintah SQL untuk hapus data?

Perintah DELETE digunakan untuk menghapus baris data pada suatu tabel dalam database.

Dalam MySQL ada perintah Duplicate berfungsi untuk apa?

Update On Duplicate adalah perintah query yang digunakan untuk melakukan update data ketika data tersebut sudah ada. Namun dengan keyword ini, jika data tidak ada / tidak duplikat, maka proses insert dilakukan. Jika terdapat duplikasi maka update data tersebut.