distinct mysql | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: distinct mysql

Sunday, April 5, 2026

distinct mysql

๐Ÿ  Beranda Tutorial MySQL Artikel 13
๐ŸŸก Menengah ๐Ÿ—„️ SQL & Database ⏱️ ~7 Menit Baca ๐Ÿ“š Artikel 13 dari 28

Menghapus Duplikat:
Perintah DISTINCT di MySQL

Capek lihat data yang sama muncul berkali-kali di hasil query? Satu kata ajaib: DISTINCT. Pelajari cara memakainya dengan benar — termasuk jebakan yang sering bikin bingung.

3
Perintah SQL
9
Contoh Query
7
Menit Baca

Pernah daftar absen rapat, terus satu nama muncul tiga kali karena sistem dicatat berulang? Atau kamu tarik data kota dari tabel pelanggan, eh yang keluar "Jakarta, Jakarta, Surabaya, Jakarta, Bandung, Surabaya" — penuh duplikat yang bikin pusing. Nah, di sinilah DISTINCT MySQL jadi penyelamat.

Di artikel ke-13 dari seri Belajar Query SQL MySQL ini, kita akan tuntas membahas perintah SELECT DISTINCT — cara kerjanya, kapan dipakai, kombinasinya dengan klausa lain, dan jebakan-jebakan umum yang sering mengecoh pemula.

Kenapa penting? Karena dalam proyek nyata, data duplikat itu sangat umum — terutama saat kamu bergabung data dari beberapa tabel atau melakukan analisis. Kalau kamu tidak paham DISTINCT, laporan dan analisis kamu bisa jadi tidak akurat.

Yang akan kamu pelajari di artikel ini:

  • Cara kerja SELECT DISTINCT dan kapan harus memakainya
  • DISTINCT pada satu kolom vs banyak kolom
  • Kombinasi DISTINCT dengan COUNT, WHERE, dan ORDER BY
  • Perbedaan DISTINCT vs GROUP BY — kapan pakai yang mana
⚡ Fakta Menarik tentang DISTINCT!

SELECT DISTINCT bekerja pada kombinasi nilai semua kolom yang disebutkan — bukan hanya satu kolom. Jadi SELECT DISTINCT kota, provinsi akan mengembalikan kombinasi unik kota+provinsi, bukan sekadar kota yang unik. Ini sumber kebingungan paling umum bagi pemula! Dan satu lagi: DISTINCT juga memperlakukan NULL sebagai satu nilai — jadi dua baris yang sama-sama NULL dianggap duplikat.

1. Apa Itu DISTINCT dan Bagaimana Cara Kerjanya?

Bayangkan kamu punya daftar belanja yang panjang dan ingin tahu merek apa saja yang ada — bukan berapa banyak tiap merek, tapi cukup daftarnya saja. Itulah fungsi DISTINCT: mengambil nilai-nilai unik dari sebuah kolom, membuang semua duplikat.

Mari kita setup tabel contoh untuk toko online kita. Perhatikan bahwa ada banyak data yang berulang — persis seperti data dunia nyata:

SQL
-- Tabel pesanan toko online dengan data duplikat
CREATE TABLE pesanan (
  id_pesanan     INT PRIMARY KEY,
  nama_pelanggan VARCHAR(100),
  kota           VARCHAR(50),
  kategori_produk VARCHAR(50),
  status_pesanan VARCHAR(30),
  total_harga    DECIMAL(10,2)
);

INSERT INTO pesanan VALUES
(1,  'Andi',    'Jakarta',  'Elektronik', 'Selesai',  350000),
(2,  'Budi',    'Surabaya', 'Fashion',    'Selesai',  175000),
(3,  'Citra',   'Jakarta',  'Fashion',    'Proses',   220000),
(4,  'Doni',    'Bandung',  'Elektronik', 'Selesai',   98000),
(5,  'Eka',     'Jakarta',  'Makanan',    'Proses',   450000),
(6,  'Andi',    'Jakarta',  'Makanan',    'Selesai',  125000),
(7,  'Fajar',   'Surabaya', 'Elektronik', 'Batal',    670000),
(8,  'Citra',   'Jakarta',  'Elektronik', 'Selesai',  310000),
(9,  'Budi',    'Surabaya', 'Makanan',    'Proses',    88000),
(10, 'Eka',     'Jakarta',  'Fashion',    'Selesai',  540000);
๐Ÿ“ SINTAKS DASAR DISTINCT
SELECT DISTINCT kolom1 [, kolom2, ...]   -- kolom yang ingin diambil nilainya secara unik
FROM nama_tabel                           -- dari tabel mana
[WHERE kondisi]                           -- opsional: filter sebelum DISTINCT diterapkan
[ORDER BY kolom];                         -- opsional: urutkan hasilnya

-- ⚠️ DISTINCT selalu diletakkan tepat setelah kata SELECT
-- ⚠️ DISTINCT berlaku untuk SEMUA kolom yang disebutkan

Sekarang coba query paling sederhana — ambil daftar kota yang pernah memesan, tanpa duplikat:

SQL
-- Tanpa DISTINCT: semua kota muncul, termasuk duplikat
SELECT kota FROM pesanan;

-- Dengan DISTINCT: tiap kota hanya muncul sekali
SELECT DISTINCT kota FROM pesanan ORDER BY kota;

๐Ÿ“Š Perbandingan Hasil — Tanpa vs Dengan DISTINCT:

❌ SELECT kota (tanpa DISTINCT)
kota
Jakarta
Surabaya
Jakarta ←duplikat
Bandung
Jakarta ←duplikat
Jakarta ←duplikat
Surabaya ←duplikat
Jakarta ←duplikat
Surabaya ←duplikat
Jakarta ←duplikat
10 baris
✅ SELECT DISTINCT kota
kota
Bandung
Jakarta
Surabaya
3 baris (unik semua!)
๐Ÿ’ก TIP PRAKTIS

Gunakan SELECT DISTINCT bersama ORDER BY untuk mendapatkan daftar nilai unik yang terurut rapi — sangat berguna untuk mengisi dropdown menu atau select box di aplikasi web.

2. DISTINCT MySQL pada Banyak Kolom — Hati-hati Jebakan!

Ini adalah bagian yang paling sering bikin bingung. Ketika kamu menulis SELECT DISTINCT kolom1, kolom2, MySQL tidak hanya membuat kolom1 unik — ia membuat kombinasi kolom1 dan kolom2 yang unik.

Analogi: bayangkan kamu punya daftar nama + kota. "Andi di Jakarta" dan "Andi di Surabaya" dianggap dua entri berbeda, meskipun namanya sama. DISTINCT melihat keseluruhan baris, bukan satu kolom saja.

SQL
-- DISTINCT pada dua kolom: kombinasi unik kota + kategori
SELECT DISTINCT kota, kategori_produk
FROM pesanan
ORDER BY kota, kategori_produk;

-- DISTINCT pada status pesanan
SELECT DISTINCT status_pesanan
FROM pesanan
ORDER BY status_pesanan;

๐Ÿ“Š Hasil — DISTINCT Dua Kolom (kota + kategori_produk):

kota kategori_produk Keterangan
BandungElektronikKombinasi unik
JakartaElektronikKombinasi unik
JakartaFashionKombinasi unik
JakartaMakananKombinasi unik
SurabayaElektronikKombinasi unik
SurabayaFashionKombinasi unik
SurabayaMakananKombinasi unik
7 kombinasi unik dari 10 baris data
⚠️ PERINGATAN — Jebakan Pemula!

Banyak yang salah mengira SELECT DISTINCT nama, kota akan membuat kolom nama saja yang unik. Padahal MySQL melihat seluruh kombinasi baris. Kalau kamu ingin nilai unik dari satu kolom tertentu saja, cukup sebutkan satu kolom itu: SELECT DISTINCT nama.

3. Kombinasi Powerful: DISTINCT MySQL dengan COUNT, WHERE, dan ORDER BY

DISTINCT menjadi jauh lebih berguna saat dikombinasikan dengan fungsi dan klausa lain. Salah satu kombinasi favorit para developer adalah COUNT(DISTINCT kolom) — untuk menghitung berapa banyak nilai unik ada di sebuah kolom.

Misalnya: "berapa banyak pelanggan berbeda yang sudah memesan?" atau "berapa kota yang terjangkau layanan kita?" — pertanyaan-pertanyaan seperti ini dijawab oleh COUNT(DISTINCT).

SQL
-- Hitung jumlah pelanggan unik
SELECT COUNT(DISTINCT nama_pelanggan) AS jumlah_pelanggan
FROM pesanan;

-- Hitung jumlah kota yang dilayani
SELECT COUNT(DISTINCT kota) AS jumlah_kota
FROM pesanan;

-- DISTINCT + WHERE: kota yang melakukan pesanan dengan status 'Selesai'
SELECT DISTINCT kota
FROM pesanan
WHERE status_pesanan = 'Selesai'
ORDER BY kota;

-- Kategori produk yang dipesan dari Jakarta
SELECT DISTINCT kategori_produk
FROM pesanan
WHERE kota = 'Jakarta'
ORDER BY kategori_produk;

๐Ÿ“Š Hasil Query COUNT(DISTINCT) dan Kombinasinya:

COUNT DISTINCT nama_pelanggan
jumlah_pelanggan
5
COUNT DISTINCT kota
jumlah_kota
3
Kota (Status: Selesai)
kota
Bandung
Jakarta
Surabaya
Kategori dari Jakarta
kategori_produk
Elektronik
Fashion
Makanan
๐Ÿ’ก TIP PRAKTIS

COUNT(DISTINCT kolom) adalah cara paling efisien untuk menjawab pertanyaan bisnis seperti "berapa pelanggan aktif bulan ini?" atau "berapa produk berbeda yang terjual?". Fungsi ini sangat sering dipakai dalam query dashboard dan laporan analitik.

4. DISTINCT vs GROUP BY — Mana yang Lebih Tepat?

Pertanyaan klasik: "Bukankah GROUP BY juga bisa menghapus duplikat?" — Jawabannya: bisa, tapi dengan tujuan yang berbeda. Analoginya: keduanya seperti cara memilah kartu — DISTINCT sekadar membuang kartu ganda, GROUP BY menghitung sekaligus mengelompokkan.

SQL
-- DISTINCT: hanya mau daftar kota unik, itu saja
SELECT DISTINCT kota
FROM pesanan;

-- GROUP BY: mau daftar kota PLUS informasi tambahan (jumlah pesanan)
SELECT kota, COUNT(*) AS jumlah_pesanan
FROM pesanan
GROUP BY kota
ORDER BY jumlah_pesanan DESC;

๐Ÿ“Š Hasil — GROUP BY dengan Informasi Tambahan:

kota jumlah_pesanan
Jakarta6
Surabaya3
Bandung1
๐Ÿ”ฎ INSIGHT DARI LAPANGAN

Dari sisi performa, GROUP BY dan DISTINCT seringkali menghasilkan execution plan yang sama di MySQL. Artinya tidak selalu ada perbedaan kecepatan. Pilih berdasarkan kebutuhan: kalau hanya butuh daftar unik → pakai DISTINCT; kalau butuh agregasi (SUM, COUNT, AVG per grup) → pakai GROUP BY.

๐Ÿงช Langkah Praktikum: Kuasai DISTINCT dari Nol

1
Buat tabel dan isi data contoh

Jalankan script CREATE TABLE dan INSERT VALUES dari contoh di atas di MySQL Workbench atau phpMyAdmin. Pastikan data sudah masuk 10 baris.

2
Bandingkan SELECT biasa vs SELECT DISTINCT

Jalankan dua query ini bersamaan dan perhatikan perbedaan jumlah baris hasilnya:

SELECT nama_pelanggan FROM pesanan;           -- 10 baris
SELECT DISTINCT nama_pelanggan FROM pesanan;  -- 5 baris
3
Coba DISTINCT pada dua kolom

Perhatikan bagaimana kombinasi dua kolom mempengaruhi jumlah hasil:

SELECT DISTINCT nama_pelanggan, kota
FROM pesanan ORDER BY nama_pelanggan;
4
Gunakan COUNT(DISTINCT) untuk analisis data

Latihan penting: hitung metrics dasar toko online dengan satu query:

SELECT
  COUNT(DISTINCT nama_pelanggan) AS total_pelanggan,
  COUNT(DISTINCT kota)           AS total_kota,
  COUNT(DISTINCT kategori_produk) AS total_kategori
FROM pesanan;
Bandingkan DISTINCT dengan GROUP BY

Jalankan dua query berikut dan perhatikan kapan keduanya menghasilkan data yang sama, dan kapan tidak: SELECT DISTINCT kota FROM pesanan vs SELECT kota FROM pesanan GROUP BY kota. Hasilnya identik untuk satu kolom — tapi coba tambahkan COUNT(*) ke versi GROUP BY dan lihat perbedaannya!

๐Ÿ“‹ Tabel Perbandingan Lengkap

Ringkasan semua yang perlu kamu tahu tentang DISTINCT dan perbandingannya:

Aspek SELECT DISTINCT GROUP BY
Tujuan utama Menghilangkan duplikat Mengelompokkan + agregasi
Bisa pakai COUNT, SUM? Hanya COUNT(DISTINCT) ✅ Ya, semua fungsi agregasi
Sintaks SELECT DISTINCT kol GROUP BY kol
Kapan dipakai Cukup butuh daftar unik Butuh statistik per grup
Performa Setara di kebanyakan kasus Setara di kebanyakan kasus
Perlakuan NULL NULL dianggap satu nilai unik NULL dijadikan satu grup
Contoh use case Isi dropdown kota, filter unik Laporan penjualan per kota
๐ŸŽฏ TIP #1 — DISTINCT di Subquery

Kamu bisa pakai DISTINCT di dalam subquery untuk menyederhanakan logika. Misalnya: SELECT * FROM kota_tabel WHERE nama IN (SELECT DISTINCT kota FROM pesanan) — cara elegan untuk filter berdasarkan data dinamis.

๐Ÿ”‘ TIP #2 — DISTINCT & Performa Besar

Pada tabel dengan jutaan baris, DISTINCT bisa lambat karena harus membaca semua data dan menghapus duplikat. Pertimbangkan menambahkan INDEX pada kolom yang sering di-DISTINCT, atau gunakan teknik paginasi agar query tidak memberatkan server.

✅ Kesimpulan

  • DISTINCT MySQL adalah cara paling mudah dan langsung untuk menghilangkan baris duplikat dari hasil query.
  • Ketika dipakai pada beberapa kolom, DISTINCT bekerja pada kombinasi semua kolom — bukan hanya satu kolom saja.
  • COUNT(DISTINCT kolom) adalah kombinasi powerful untuk menghitung berapa banyak nilai unik ada dalam sebuah kolom.
  • Gunakan DISTINCT saat kamu hanya butuh daftar unik; gunakan GROUP BY saat butuh statistik per grup.
  • DISTINCT juga memperlakukan NULL sebagai satu nilai — dua baris NULL dianggap duplikat dan hanya satu yang ditampilkan.

Satu kata, satu perintah, tapi dampaknya luar biasa. DISTINCT adalah salah satu alat paling sering dipakai dalam dunia nyata — dari mengisi dropdown di aplikasi web, sampai analisis data jutaan baris. Kuasai ini, dan query kamu langsung naik kelas! ๐Ÿš€

๐Ÿ“– ARTIKEL SELANJUTNYA DALAM SERI
Artikel 14: ORDER BY — Mengurutkan Hasil Query dengan Rapi

Pelajari cara mengurutkan data secara ascending dan descending, mengurutkan berdasarkan beberapa kolom sekaligus, serta tips mengoptimalkan ORDER BY untuk performa query yang lebih baik.

Baca Selanjutnya →
#MySQL #SQL #Database #Query #Tutorial #DISTINCT MySQL #BelajarSQL #TokoOnline

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux