Perintah ORDER BY

📚 Pengenalan Perintah ORDER BY

Perintah ORDER BY digunakan untuk mengurutkan hasil query berdasarkan kolom tertentu. Secara default, pengurutan dilakukan secara ascending (ASC). Anda dapat menggunakan DESC untuk pengurutan descending.

Sintaks Dasar ORDER BY

Sintaks dasar perintah ORDER BY adalah:

SELECT kolom1, kolom2, ...
FROM nama_tabel
ORDER BY kolom1 [ASC|DESC], kolom2 [ASC|DESC], ...;

Contoh Penggunaan ORDER BY

Misalkan kita memiliki tabel 'pelanggan' dengan data berikut:

id nama email kota usia
1 John Doe john@example.com Jakarta 30
2 Jane Smith jane@example.com Bandung 25
3 Bob Johnson bob@example.com Jakarta 35
4 Alice Brown alice@example.com Surabaya 28

Pengurutan Ascending (ASC)

Untuk mengurutkan data berdasarkan nama secara ascending (dari A ke Z):

SELECT * FROM pelanggan ORDER BY nama ASC;

Atau tanpa menggunakan ASC (karena ASC adalah default):

SELECT * FROM pelanggan ORDER BY nama;

Pengurutan Descending (DESC)

Untuk mengurutkan data berdasarkan usia secara descending (dari yang terbesar ke terkecil):

SELECT * FROM pelanggan ORDER BY usia DESC;

Pengurutan Berdasarkan Beberapa Kolom

Anda dapat mengurutkan data berdasarkan beberapa kolom. Data akan diurutkan berdasarkan kolom pertama, lalu jika ada nilai yang sama, akan diurutkan berdasarkan kolom kedua, dan seterusnya:

-- Mengurutkan berdasarkan kota secara ascending, lalu nama secara ascending
SELECT * FROM pelanggan ORDER BY kota, nama;

Anda juga dapat menggunakan arah pengurutan yang berbeda untuk setiap kolom:

-- Mengurutkan berdasarkan kota secara ascending, lalu usia secara descending
SELECT * FROM pelanggan ORDER BY kota ASC, usia DESC;

ORDER BY dengan WHERE

Anda dapat menggabungkan ORDER BY dengan WHERE untuk memfilter dan mengurutkan data:

-- Mengambil data pelanggan dari Jakarta, diurutkan berdasarkan usia secara descending
SELECT * FROM pelanggan 
WHERE kota = 'Jakarta' 
ORDER BY usia DESC;

ORDER BY dengan Ekspresi

Anda dapat menggunakan ekspresi dalam ORDER BY:

-- Mengurutkan berdasarkan panjang nama
SELECT * FROM pelanggan ORDER BY LENGTH(nama);

-- Mengurutkan berdasarkan tahun kelahiran (dari yang tertua)
SELECT *, YEAR(CURRENT_DATE) - usia AS tahun_lahir
FROM pelanggan 
ORDER BY tahun_lahir ASC;

Catatan: Fungsi seperti LENGTH() dan YEAR() mungkin sedikit berbeda tergantung pada sistem database yang digunakan.

ORDER BY dengan Alias

Anda dapat menggunakan alias kolom dalam ORDER BY:

-- Mengurutkan berdasarkan tahun kelahiran menggunakan alias
SELECT *, YEAR(CURRENT_DATE) - usia AS tahun_lahir
FROM pelanggan 
ORDER BY tahun_lahir;

ORDER BY dengan Nomor Kolom

Beberapa sistem database memungkinkan Anda menggunakan nomor kolom dalam ORDER BY:

-- Mengurutkan berdasarkan kolom kedua (nama)
SELECT id, nama, email, kota, usia
FROM pelanggan 
ORDER BY 2;

Catatan: Menggunakan nomor kolom dalam ORDER BY tidak disarankan karena dapat membuat query sulit dibaca dan rawan error jika struktur tabel berubah.

Coba Sendiri

Anda dapat mencoba kode SQL di atas di editor berikut:

💡 Tips Perintah ORDER BY

Saat mengurutkan data berdasarkan kolom teks, pengurutan akan bergantung pada collation (aturan pengurutan) yang digunakan oleh database. Collation menentukan bagaimana karakter dibandingkan, termasuk case-sensitivity dan urutan karakter khusus.