Saat kita menggunakan SELECT
yang merupakan perintah untuk mengambil data dari tabel MySQL, urutan baris dalam kumpulan hasil tidak ditentukan. Namun, ketika kita bekerja dengan basis data MySQL, seringkali kita perlu mengurutkan data dalam hasil query sesuai dengan kriteria tertentu. MySQL menyediakan klausa ORDER BY
yang memungkinkan kita untuk mengurutkan data dalam hasil query sesuai dengan kolom tertentu. Dalam tutorial ini, kami akan berusaha menjelaskan bagaimana menggunakan klausa ORDER BY
untuk mengurutkan data dalam MySQL dengan penjelasan yang lengkap dan contoh penggunaan pada tabel “pengguna” yang telah dibuat sebelumnya.
Mengenal Klausa ORDER BY
Klausa ORDER BY
digunakan dalam perintah SELECT
untuk mengurutkan hasil query berdasarkan satu atau lebih kolom dalam urutan tertentu. Kita dapat mengurutkan data dalam urutan naik (ascending) atau turun (descending) berdasarkan nilai-nilai dalam kolom tersebut.
Berikut adalah format umum dari perintah SELECT
dengan klausa ORDER BY
:
1 2 3 | SELECT kolom1, kolom2, ... FROM nama_tabel ORDER BY kolom_urutan [ASC | DESC]; |
Keterangan:
kolom1, kolom2, ...
adalah daftar kolom yang akan diambil dari tabel.nama_tabel
adalah nama tabel dari mana kita ingin mengambil data.kolom_urutan
adalah nama kolom berdasarkan nilai-nilai mana data akan diurutkan.[ASC | DESC]
adalah opsional dan menentukan urutan pengurutan, dengan “ASC” (Ascending) sebagai urutan naik dan “DESC” (Descending) sebagai urutan turun. Secara default, urutan adalah naik (ASC).
Contoh Penggunaan Klausa ORDER BY
Mari kita lihat beberapa contoh penggunaan klausa ORDER BY
pada tabel “pengguna” yang telah kita buat sebelumnya.
1. Mengurutkan Data Berdasarkan Nama Secara Ascending
Misalkan kita ingin mengurutkan pengguna berdasarkan nama secara ascending (urutan alfabet). Maka berikut adalah perintah SQLnya:
1 | SELECT * FROM pengguna ORDER BY nama ASC; |
Hasil query di atas akan mengurutkan pengguna berdasarkan kolom “nama” dari A hingga Z, yang hasilnya dapat kita lihat seperti berikut ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT * FROM pengguna ORDER BY nama ASC; +----+-----------------+-------------------------------+---------------+ | id | nama | email | tanggal_lahir | +----+-----------------+-------------------------------+---------------+ | 2 | Abraham Budi | abraham@kelasringan.com | 1980-09-10 | | 1 | Alexander Paijo | alexander@kelasringan.com | 1990-05-15 | | 7 | Anita Sari | anita.sari@kelasringan.com | 1992-11-05 | | 10 | Arief Wibowo | arief.wibowo@kelasringan.com | 1981-12-18 | | 4 | Budi Santoso | budi.santoso@kelasringan.com | 1985-07-28 | | 5 | Dewi Lestari | dewi.lestari@kelasringan.com | 1983-02-10 | | 8 | Hafiz Rahmat | hafiz.rahmat@kelasringan.com | 1988-03-08 | | 11 | Mira Susanti | mira.susanti@kelasringan.com | 1986-05-30 | | 6 | Putra Perdana | putra.perdana@kelasringan.com | 1995-09-20 | | 9 | Rina Putri | rina.putri@kelasringan.com | 1997-06-12 | | 12 | Rudi Hermawan | rudi.hermawan@kelasringan.com | 2000-08-22 | | 3 | Siti Aisyah | siti.aisyah@kelasringan.com | 1990-04-15 | +----+-----------------+-------------------------------+---------------+ 12 rows in set (0.001 sec) |
Data diurutkan berdasarkan nama dari A hingga Z.
2. Mengurutkan Data Berdasarkan Tanggal Lahir Secara Descending
Kita juga dapat mengurutkan pengguna berdasarkan tanggal lahir secara descending (urutan terbalik). Berikut ini adalah perintah SQLnya:
1 | SELECT * FROM pengguna ORDER BY tanggal_lahir DESC; |
Hasil query di atas akan mengurutkan pengguna berdasarkan kolom “tanggal_tahir” dari yang paling muda ke yang paling tua:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT * FROM pengguna ORDER BY tanggal_lahir DESC; +----+-----------------+-------------------------------+---------------+ | id | nama | email | tanggal_lahir | +----+-----------------+-------------------------------+---------------+ | 12 | Rudi Hermawan | rudi.hermawan@kelasringan.com | 2000-08-22 | | 9 | Rina Putri | rina.putri@kelasringan.com | 1997-06-12 | | 6 | Putra Perdana | putra.perdana@kelasringan.com | 1995-09-20 | | 7 | Anita Sari | anita.sari@kelasringan.com | 1992-11-05 | | 1 | Alexander Paijo | alexander@kelasringan.com | 1990-05-15 | | 3 | Siti Aisyah | siti.aisyah@kelasringan.com | 1990-04-15 | | 8 | Hafiz Rahmat | hafiz.rahmat@kelasringan.com | 1988-03-08 | | 11 | Mira Susanti | mira.susanti@kelasringan.com | 1986-05-30 | | 4 | Budi Santoso | budi.santoso@kelasringan.com | 1985-07-28 | | 5 | Dewi Lestari | dewi.lestari@kelasringan.com | 1983-02-10 | | 10 | Arief Wibowo | arief.wibowo@kelasringan.com | 1981-12-18 | | 2 | Abraham Budi | abraham@kelasringan.com | 1980-09-10 | +----+-----------------+-------------------------------+---------------+ 12 rows in set (0.000 sec) |
Data diurutkan berdasarkan tanggal lahir dari yang paling muda ke yang paling tua.
3. Mengurutkan Data Berdasarkan Nama dan Tanggal Lahir
Kita juga dapat mengurutkan data berdasarkan lebih dari satu kolom. Misalnya, jika kita ingin mengurutkan pengguna berdasarkan nama secara descending dan kemudian, jika ada nama yang sama, mengurutkannya berdasarkan tanggal lahir secara ascending, Kita dapat melakukannya seperti ini:
1 | SELECT * FROM pengguna ORDER BY nama DESC, tanggal_lahir ASC; |
Hasil query ini akan mengurutkan pengguna berdasarkan kolom “nama” secara descending, dan jika ada nama yang sama, data tersebut akan diurutkan berdasarkan kolom “tanggal_lahir” secara ascending. Hasil dari query di atas akan terlihat seperti gambar berikut ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT * FROM pengguna ORDER BY nama DESC, tanggal_lahir ASC; +----+-----------------+-------------------------------+---------------+ | id | nama | email | tanggal_lahir | +----+-----------------+-------------------------------+---------------+ | 3 | Siti Aisyah | siti.aisyah@kelasringan.com | 1990-04-15 | | 12 | Rudi Hermawan | rudi.hermawan@kelasringan.com | 2000-08-22 | | 9 | Rina Putri | rina.putri@kelasringan.com | 1997-06-12 | | 6 | Putra Perdana | putra.perdana@kelasringan.com | 1995-09-20 | | 11 | Mira Susanti | mira.susanti@kelasringan.com | 1986-05-30 | | 8 | Hafiz Rahmat | hafiz.rahmat@kelasringan.com | 1988-03-08 | | 5 | Dewi Lestari | dewi.lestari@kelasringan.com | 1983-02-10 | | 4 | Budi Santoso | budi.santoso@kelasringan.com | 1985-07-28 | | 10 | Arief Wibowo | arief.wibowo@kelasringan.com | 1981-12-18 | | 7 | Anita Sari | anita.sari@kelasringan.com | 1992-11-05 | | 1 | Alexander Paijo | alexander@kelasringan.com | 1990-05-15 | | 2 | Abraham Budi | abraham@kelasringan.com | 1980-09-10 | +----+-----------------+-------------------------------+---------------+ 12 rows in set (0.001 sec) |
Kesimpulan
Klausa ORDER BY
adalah tools yang berguna dalam SQL untuk mengurutkan data dalam hasil query berdasarkan kriteria tertentu. Dengan menggunakan ORDER BY
, kita dapat mengorganisir data kita, agar lebih mudah dibaca dan dimengerti. Kita dapat mengurutkan data dalam urutan naik atau turun berdasarkan kolom yang kita pilih. Pemahaman yang baik tentang klausa ORDER BY
akan membantu kita mengambil data dengan urutan yang sesuai dengan kebutuhan kita dalam pengelolaan basis data MySQL.
Daftar atau list tutorial MySQL dapat anda lihat di Index Tutorial MySQL: Belajar MySQL Dari Dasar.