Cara Menggunakan Query DISTINCT Untuk Menghapus Duplikasi
Penekanan untuk judul diatas, query DISTINCT digunakan hanya untuk memanipulasi tampilan hasil dari tabel. Duplikasi yang dihapus adalah untuk tampilan data, bukan data asli yang ada di MySQL.
Misalkan dari tabel daftar_dosen kita ingin menampilkan asal kota dari seluruh dosen yang ada. Maka querynya adalah sebagai berikut:
mysql> SELECT alamat FROM daftar_dosen ORDER BY alamat; +-----------+ | alamat | +-----------+ | Aceh | | Bogor | | Jakarta | | Jakarta | | Jakarta | | Makasar | | Padang | | Padang | | Palembang | | Palembang | | Papua | | Pekanbaru | +-----------+ 12 rows in set (0.00 sec)
Saya menambahkan perintah ORDER BY alamat agar tampilan lebih rapi (diurutkan berdasarkan alamat).
Dari hasil query, dapat dilihat bahwa nama kota yang sama akan tampil lebih dari sekali. Ini terjadi karena terdapat beberapa dosen yang beralamat di kota yang sama. Jika kita ingin setiap kota hanya muncul 1 kali saja, bisa menggunakan query DISTINCT.
Cara Penulisan Query DISTINCT MySQL
Berikut format dasar penulisan query DISTINCT:
SELECT DISTINCT nama_kolom FROM nama_tabel;
nama_kolom
adalah nama kolom yang akan ditampilkan.nama_tabel
adalah nama tabel dari kolom yang akan ditampilkan
Sehingga untuk menampilkan seluruh kota 1 kali saja bisa menggunakan query:
mysql> SELECT DISTINCT alamat FROM daftar_dosen ORDER BY alamat; +-----------+ | alamat | +-----------+ | Aceh | | Bogor | | Jakarta | | Makasar | | Padang | | Palembang | | Papua | | Pekanbaru | +-----------+ 8 rows in set (0.00 sec)
Dengan penambahan perintah DISTINCT di awal query SELECT, maka hanya data yang unik saja yang akan tampil. Seandainya hasil query terdapat data yang sama lebih dari 1 kali tampil, perintah DISTINCT hanya akan menampilkannya 1 kali saja.
Namun jika kita menambah kolom nama_dosen, efeknya menjadi berbeda:
mysql> SELECT DISTINCT nama_dosen,alamat FROM daftar_dosen ORDER BY alamat; +----------------+-----------+ | nama_dosen | alamat | +----------------+-----------+ | Mustalifah | Aceh | | Susi Indriani | Bogor | | Aria Sulistya | Jakarta | | M. Siddiq | Jakarta | | Rudi Arwana | Jakarta | | Arif Budiman | Makasar | | Siswanto | Padang | | Tia Santrini | Padang | | Maya Ari Putri | Palembang | | Suci Syuhada | Palembang | | Rubin Hadi | Papua | | Sabrina Sari | Pekanbaru | +----------------+-----------+ 12 rows in set (0.06 sec)
Terlihat MySQL tetap menampilkan seluruh isi tabel tanpa ada yang dieliminasi. Ini disebabkan query DISTINCT hanya mengeliminasi query yang unik secara baris per baris (per record).
Dengan mengombinasikan nama_dosen dengan alamat, maka setiap baris dianggap unik, kecuali terdapat nama dosen dan alamat yang persis sama.
Query SELECT….DISTINCT yang kita pelajari kali ini cocok dipakai untuk laporan atau menampilkan sebagian data dari tabel MySQL.
Sumber https://www.duniailkom.com/tutorial-belajar-mysql-menghapus-duplikasi-data-dengan-query-distinct/