Mengurutkan Data di MySQL dengan ORDER BY: Panduan Lengkap dan Contoh Praktis

By | August 16, 2025

ORDER BY adalah salah satu clause paling penting dalam MySQL yang digunakan untuk mengurutkan hasil query berdasarkan satu atau lebih kolom. Dengan menguasai ORDER BY, Anda dapat menampilkan data dalam urutan yang sesuai dengan kebutuhan aplikasi dan memberikan pengalaman yang lebih baik bagi pengguna.

Apa itu ORDER BY dalam MySQL?

ORDER BY adalah clause SQL yang digunakan untuk mengurutkan baris hasil query berdasarkan nilai dalam satu atau lebih kolom. Pengurutan dapat dilakukan secara ascending (naik) atau descending (turun), dan dapat diterapkan pada berbagai tipe data seperti angka, teks, dan tanggal.

Sintaks Dasar ORDER BY

Berikut adalah sintaks dasar penggunaan ORDER BY dalam MySQL:

SELECT kolom1, kolom2, …
FROM nama_tabel
WHERE kondisi (opsional)
ORDER BY kolom1 [ASC|DESC], kolom2 [ASC|DESC], …
LIMIT jumlah (opsional);

Keterangan:

  • ASC: Ascending (urutan naik) – default jika tidak disebutkan
  • DESC: Descending (urutan turun)

1. Mengurutkan Berdasarkan Satu Kolom

Contoh paling sederhana adalah mengurutkan data berdasarkan satu kolom:

— Mengurutkan berdasarkan nama (A-Z)
SELECT * FROM users ORDER BY nama;– Sama dengan (ASC adalah default)
SELECT * FROM users ORDER BY nama ASC;– Mengurutkan berdasarkan nama (Z-A)
SELECT * FROM users ORDER BY nama DESC;

— Mengurutkan berdasarkan umur (terkecil ke terbesar)
SELECT * FROM users ORDER BY umur ASC;

— Mengurutkan berdasarkan umur (terbesar ke terkecil)
SELECT * FROM users ORDER BY umur DESC;

2. Mengurutkan Berdasarkan Multiple Kolom

ORDER BY dapat mengurutkan berdasarkan beberapa kolom sekaligus. Urutan kolom menentukan prioritas pengurutan:

— Urutkan berdasarkan kota, lalu nama
SELECT * FROM users ORDER BY kota ASC, nama ASC;– Urutkan berdasarkan departemen (A-Z), lalu gaji (besar ke kecil)
SELECT * FROM karyawan ORDER BY departemen ASC, gaji DESC;– Urutkan berdasarkan status, tanggal daftar, dan nama
SELECT * FROM users
ORDER BY status DESC, created_at ASC, nama ASC;

3. Mengurutkan Berdasarkan Posisi Kolom

Anda juga dapat menggunakan nomor posisi kolom dalam SELECT untuk ORDER BY:

— Urutkan berdasarkan kolom ke-2 dan ke-3
SELECT nama, umur, kota FROM users ORDER BY 2, 3;– Sama dengan
SELECT nama, umur, kota FROM users ORDER BY umur, kota;

4. Mengurutkan dengan Fungsi dan Ekspresi

ORDER BY dapat menggunakan fungsi MySQL dan ekspresi matematika:

— Urutkan berdasarkan panjang nama
SELECT nama FROM users ORDER BY LENGTH(nama) DESC;– Urutkan berdasarkan tahun lahir
SELECT nama, tanggal_lahir
FROM users
ORDER BY YEAR(tanggal_lahir) ASC;– Urutkan berdasarkan total (hasil perhitungan)
SELECT nama, harga, qty, (harga * qty) as total
FROM orders
ORDER BY total DESC;

— Urutkan berdasarkan nama belakang
SELECT nama FROM users
ORDER BY SUBSTRING_INDEX(nama, ‘ ‘, -1) ASC;

5. Mengurutkan Data Tanggal dan Waktu

Pengurutan data tanggal memerlukan perhatian khusus:

— Urutkan berdasarkan tanggal terbaru
SELECT * FROM posts ORDER BY created_at DESC;– Urutkan berdasarkan tanggal terlama
SELECT * FROM posts ORDER BY created_at ASC;– Urutkan berdasarkan bulan dan tahun
SELECT * FROM transaksi
ORDER BY YEAR(tanggal) DESC, MONTH(tanggal) DESC;

— Urutkan berdasarkan hari dalam seminggu
SELECT * FROM jadwal
ORDER BY DAYOFWEEK(tanggal) ASC;

6. Mengurutkan dengan CASE Statement

Untuk pengurutan custom, gunakan CASE statement:

— Urutkan status dengan prioritas custom
SELECT * FROM orders
ORDER BY
CASE status
WHEN ‘urgent’ THEN 1
WHEN ‘high’ THEN 2
WHEN ‘medium’ THEN 3
WHEN ‘low’ THEN 4
ELSE 5
END ASC;– Urutkan hari dengan urutan custom
SELECT * FROM jadwal
ORDER BY
CASE hari
WHEN ‘Senin’ THEN 1
WHEN ‘Selasa’ THEN 2
WHEN ‘Rabu’ THEN 3
WHEN ‘Kamis’ THEN 4
WHEN ‘Jumat’ THEN 5
WHEN ‘Sabtu’ THEN 6
WHEN ‘Minggu’ THEN 7
END ASC;

7. Mengurutkan dengan NULL Values

Penanganan nilai NULL dalam pengurutan:

— NULL akan muncul di akhir (ASC)
SELECT * FROM users ORDER BY phone ASC;– NULL akan muncul di awal (DESC)
SELECT * FROM users ORDER BY phone DESC;– Memaksa NULL di akhir
SELECT * FROM users
ORDER BY phone IS NULL ASC, phone ASC;

— Memaksa NULL di awal
SELECT * FROM users
ORDER BY phone IS NOT NULL ASC, phone ASC;

8. ORDER BY dengan GROUP BY

Kombinasi ORDER BY dengan GROUP BY untuk data agregat:

— Urutkan grup berdasarkan jumlah
SELECT kota, COUNT(*) as jumlah_user
FROM users
GROUP BY kota
ORDER BY jumlah_user DESC;– Urutkan berdasarkan rata-rata
SELECT departemen, AVG(gaji) as rata_gaji
FROM karyawan
GROUP BY departemen
ORDER BY rata_gaji DESC;– Multiple pengurutan pada data grup
SELECT kategori, COUNT(*) as total, AVG(harga) as rata_harga
FROM produk
GROUP BY kategori
ORDER BY total DESC, rata_harga ASC;

9. Optimasi Performa ORDER BY

Tips untuk meningkatkan performa query dengan ORDER BY:

— Gunakan INDEX pada kolom yang sering diurutkan
CREATE INDEX idx_nama ON users(nama);
CREATE INDEX idx_created_at ON posts(created_at);– Kombinasi INDEX untuk multiple column sorting
CREATE INDEX idx_kota_nama ON users(kota, nama);– Gunakan LIMIT untuk membatasi hasil
SELECT * FROM users
ORDER BY created_at DESC
LIMIT 10;

10. Contoh Praktis Lengkap

Berikut contoh penggunaan ORDER BY dalam skenario nyata:

— Dashboard admin: user terbaru dengan aktivitas tertinggi
SELECT
u.nama,
u.email,
u.created_at,
COUNT(p.id) as total_posts,
MAX(p.created_at) as last_activity
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE u.status = ‘active’
GROUP BY u.id, u.nama, u.email, u.created_at
ORDER BY u.created_at DESC, total_posts DESC
LIMIT 20;– Laporan penjualan: produk terlaris per kategori
SELECT
kategori,
nama_produk,
SUM(qty) as total_terjual,
SUM(harga * qty) as total_revenue
FROM penjualan p
JOIN produk pr ON p.produk_id = pr.id
WHERE p.tanggal >= ‘2024-01-01’
GROUP BY kategori, nama_produk
ORDER BY kategori ASC, total_terjual DESC;

Best Practices ORDER BY

  • Gunakan INDEX: Pastikan kolom yang sering diurutkan memiliki index
  • Batasi dengan LIMIT: Gunakan LIMIT untuk mengurangi beban server
  • Hindari ORDER BY pada kolom yang dihitung: Lebih baik simpan hasil perhitungan di kolom terpisah
  • Pertimbangkan COLLATION: Untuk pengurutan teks dalam bahasa tertentu
  • Monitor performa: Gunakan EXPLAIN untuk menganalisis query

Untuk mempelajari lebih lanjut tentang optimasi query database, silakan baca artikel kami tentang teknik optimasi performa MySQL yang akan membantu meningkatkan kecepatan aplikasi Anda.

Jika Anda ingin mendalami query MySQL lainnya, kami juga menyediakan tutorial tentang MySQL JOIN dan relasi tabel yang sangat berguna untuk database yang kompleks.

Untuk tutorial database MySQL lainnya, kunjungi Kelas Programmer yang menyediakan materi pembelajaran MySQL dari dasar hingga advanced.

Kesimpulan

ORDER BY adalah tool yang sangat powerful untuk mengurutkan data di MySQL. Dengan memahami berbagai teknik pengurutan seperti single column, multiple columns, fungsi, dan optimasi performa, Anda dapat membuat query yang efisien dan memberikan hasil yang sesuai dengan kebutuhan aplikasi. Praktikkan contoh-contoh di atas untuk menguasai penggunaan ORDER BY dalam berbagai skenario.

📊 Meta Information

Categories:

  • MySQL
  • Database
  • SQL Tutorial

Tags:

  • mengurutkan-data-mysql
  • order-by-mysql
  • sorting-database
  • query-mysql
  • tutorial-sql

❓ FAQ (Frequently Asked Questions)

Q: Apa perbedaan antara ASC dan DESC dalam ORDER BY?

A: ASC (Ascending) mengurutkan data dari kecil ke besar atau A-Z, sedangkan DESC (Descending) mengurutkan dari besar ke kecil atau Z-A. ASC adalah default jika tidak disebutkan.

Q: Bisakah mengurutkan berdasarkan beberapa kolom sekaligus?

A: Ya, ORDER BY dapat menggunakan multiple kolom. Contoh: ORDER BY kota ASC, nama DESC akan mengurutkan berdasarkan kota terlebih dahulu, lalu nama dalam setiap grup kota.

Q: Bagaimana cara mengurutkan data tanggal di MySQL?

A: Gunakan ORDER BY pada kolom bertipe DATE, DATETIME, atau TIMESTAMP. Contoh: ORDER BY created_at DESC untuk menampilkan data terbaru terlebih dahulu.

Q: Apakah ORDER BY mempengaruhi performa query?

A: Ya, ORDER BY dapat mempengaruhi performa terutama pada tabel besar. Gunakan INDEX pada kolom yang sering diurutkan dan kombinasikan dengan LIMIT untuk optimasi.

Q: Bagaimana menangani nilai NULL dalam pengurutan?

A: Secara default, NULL muncul di awal saat DESC dan di akhir saat ASC. Gunakan IS NULL atau IS NOT NULL dalam ORDER BY untuk kontrol yang lebih baik.

🔗 Backlinks yang Disertakan

1. Teknik Optimasi Performa MySQL – Keyword: “optimasi performa MySQL”
2. MySQL JOIN dan Relasi Tabel – Keyword: “MySQL JOIN tutorial”
3. MySQL Tutorial – Brand: “Kelas Programmer”

🎯 SEO Meta Tags

<meta name=”description” content=”Tutorial lengkap mengurutkan data di MySQL dengan ORDER BY. Pelajari ASC, DESC, multiple columns, fungsi, dan optimasi performa untuk query yang efisien.”>
<meta name=”keywords” content=”mengurutkan data mysql, order by mysql, sorting database, query mysql, tutorial sql, mysql sorting”>
<meta property=”og:title” content=”Mengurutkan Data di MySQL dengan ORDER BY: Panduan Lengkap”>
<meta property=”og:description” content=”Pelajari cara mengurutkan data di MySQL menggunakan perintah ORDER BY dengan berbagai teknik sorting untuk mengoptimalkan query database.”>
<meta property=”og:type” content=”article”>

 

Leave a Reply

Your email address will not be published. Required fields are marked *