Kamis, 28 Januari 2016

Cara Mendeteksi Duplicate Record pada DB MySQL

Jika record/row sudah sangat banyak dalam suatu table pada database MySQL tentu mendeteksi duplicate entry/data menjadi agak sulit jika tidak menggunakan query.

Contohnya pada database santri di Pesantren saya, saya menemukan kejanggalan jumlah santri yakni kelebihan. Tapi saya tidak dapat menemukan nama santri yang double tersebut dan ada berapa jumlah yang double.

Table santri pada DB MySQL pesantren :
CREATE TABLE santri (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `nis` INT(11) NOT NULL,
    `nisn` VARCHAR(50) NOT NULL,
    `nama` VARCHAR(200) NOT NULL,
    `nama_arab` VARCHAR(200) NOT NULL COLLATE 'utf8_unicode_ci',
    `jenkel` CHAR(1) NOT NULL,
    `tl` CHAR(20) NOT NULL,
    `tgll` DATE NOT NULL,
    `asalsekolah` CHAR(50) NOT NULL,
    `kwn` CHAR(50) NOT NULL,
    `anakke` CHAR(2) NOT NULL,
    `sdr_kandung` INT(2) NOT NULL,
    `berat_bdn` INT(3) NOT NULL,
    `tinggi_bdn` INT(3) NOT NULL,
    `goldarah` CHAR(2) NOT NULL,
    `foto` CHAR(255) NOT NULL,
    `alamat` TEXT NOT NULL,
    `hp_ortu` CHAR(50) NOT NULL,
    `email_sendiri` VARCHAR(50) NOT NULL
)

Untuk itulah saya menggunakan query berikut untuk memecahkannya :
SELECT  COUNT(*) jml, nama FROM santri
GROUP BY nama
ORDER BY jml desc
Jadi hasil query di atas akan menampilkan kolom jml dan nama jika terdapat duplikat nama atau nama yang persis sama maka dikolom jml akan menampilkan jumlah nama yang sama.

Ada 1 kekurangan query ini yaitu tidak bisa mendeteksi atau membedakan jika memang ada nama santri yang sama namun orangnya berbeda.

Semoga bermanfaat.