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 | 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.