Mencari Detail Data Duplikasi di MySQL

Sharing is caring!

Wah… lama tidak nulis lagi artikel tentang SQL. Kangen rasanya 🙂 Kali ini saya akan mencoba kembali menulis tentang tips SQL. Topik yang saya angkat adalah tentang duplikasi data.

Pada artikel sebelumnya yang pernah saya tulis dalam topik Mencari Duplikasi Data dengan SQL, di situ sudah disinggung trik mencari data mana yang berduplikasi. Ya… yang namanya manusia, tentu tidak luput dari yang namanya lupa. Bisa jadi kita lupa menset suatu field yang seharusnya merupakan suatu Key. Akibatnya, data ada yang berduplikasi.

Nah… pada artikel kali ini yang masih merupakan kelanjutan dari artikel yang telah saya sebutkan di atas yaitu tentang data yang berduplikasi, akan dibahas bagaimana menampilkan detail data dari data yang berduplikasi.

Sebagai contoh misalnya data yang terkait dengan mahasiswa. Misalkan dimiliki suatu tabel mahasiswa dengan struktur sbb:

NIM -> Varchar(10)
NamaMhs -> Varchar(20)

NIM Nama Mhs
001 si A
002 si B
001 si C
003 si D
002 si E

Dalam kasus ini, seharusnya field NIM diset sebagai kunci (key) karena NIM mahasiswa tidak boleh ada yang sama (unik). Namun misalnya kali ini si perancang database lupa menset field NIM sebagai kunci, sehingga dimungkinkan ada data yang berduplikasi pada NIM sebagaimana contoh data di atas.

Pada artikel sebelumnya, telah dibahas bagaimana mencari data yang berduplikat dalam hal ini adalah field NIM nya. Akan tetapi misalkan ada pertanyaan: “Siapa nama mahasiswa yang NIM nya berduplikasi tersebut?” Hayoo… gimana coba? Pusing deh…. Oh… jangan… jangan pusing, sebab ada caranya dan caranya sangat mudah kok.

So… bagaimana caranya? OK.. begini idenya:

Langkah pertama kita harus buat query SQL terlebih dahulu untuk menampilkan NIM yang berduplikasi. Suatu data dikatakan berduplikasi bila jumlah data yang sama tersebut adalah lebih dari satu buah. Sehingga query untuk menampilkan data yang berduplikasi ini adalah sbb:

SELECT nim  FROM namaTabel
GROUP BY nim HAVING count(*) > 1

Query di atas akan menampilkan data NIM yang berduplikasi, dalam hal ini akan menampilkan ‘002’ (karena terdapat nim tersebut yang lebih dari satu).

Selanjutnya langkah kedua
, kita manfaatkan data hasil query di atas untuk menampilkan detail data yang berduplikasi tersebut. Bagaimana cara memanfaatkan atau mengkaitkannya? Ya… kita gunakan subquery. Misalkan kita ingin tampilkan siapa nama mahasiswa yang nimnya berduplikasi tersebut. Querynya adalah sebagai berikut:

SELECT NamaMhs 
FROM namaTabel 
WHERE nim IN  (SELECT nim  FROM namaTabel GROUP BY nim HAVING count(*) > 1)

Hasil query di atas akan menampilkan ‘si B‘ dan ‘si E‘.

OK… mudah sekali bukan. Jangan bingung bila menemui masalah…. karena semua masalah pasti punya jalan keluar, selagi kita mau berusaha mencari solusinya.

Mudah-mudahan artikel ini bermanfaat buat semuanya.

Tinggalkan Komentar