SQL ORDER BY keyword adalah query dalam sql yang biasa digunakan untuk mengurutkan (sort) data pada kolom tertentu baik secara urutan naik maupun turun.
Adapun konsep untuk mempermudah pemahaman terkait dengan query SQL ORDER BY bisa menggunakan ilustrasi berikut.
Ambilkan saya data pada kolom berikut dari tabel ini, jangan lupa urutkan secara menurun/naik berdasarkan kolom ini.
Jika dituliskan dalam bentuk sintaks sql, maka query ORDER BY tampak seperti berikut.
Sintaks SQL ORDER BY
SELECT
kolom1, kolom2, ...
FROM
nama_tabel
ORDER BY
kolom1, kolom2, ...
ASC
|
DESC
;
Berdasarkan sintaks di atas, dua baris pertama merupakan query sql select biasa. Adapun perintah sql order by dimulai pada baris ketiga dengan diawali kata kunci ORDER BY lalu diikuti pasangan nama kolom dan keterangan (ASC atau DESC) yang menjadi acuan untuk mengurutkannya.
Agar bisa memahami lebih lanjut, mari kita gunakan dalam kasus tabel students
yang kurang lebih isi tabelnya seperti ini.
id | name | class |
---|---|---|
1 | Dadan | X IPA 1 |
2 | Doni | X IPA 2 |
3 | Caca | X IPA 3 |
4 | Lala | X IPA 1 |
5 | Indra | X IPA 2 |
SQL ORDER BY DESC
Mari kita ketahui lebih dalam tentang keterangan DESC yang berupa keyword daripada DESCENDING. Kata kunci DESC dalam query SQL ORDER BY digunakan untuk mengurutkan hasil secara menurun.
Secara numerik ataupun date keyword DESC berarti dari besar ke kecil, sedangkan dalam bentuk alfabet berarti urut dari Z ke A.
Dari tabel students
di atas, terdapat tiga cara untuk mengurutkan hasil query sql dengan ORDER BY jika dipilih salah satu kolom sebagai acuannya.
Misalkan, contoh pertama kita pilih untuk mengurutkan secara menurun (DESC) dengan acuan kolom id
, maka query sql nya seperti berikut.
SELECT
*
FROM
students
ORDER BY
id
DESC
;
Output:
id | name | class |
---|---|---|
5 | Indra | X IPA 2 |
4 | Lala | X IPA 1 |
3 | Caca | X IPA 3 |
2 | Doni | X IPA 2 |
1 | Dadan | X IPA 1 |
Misalkan contoh kedua, kita ingin mengurutkan DESC dengan acuan kolom class, maka query sql order by untuk kasus ini seperti berikut.
SELECT
*
FROM
students
ORDER BY
class
DESC
;
Output:
id | name | class |
---|---|---|
3 | Caca | X IPA 3 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
1 | Dadan | X IPA 1 |
4 | Lala | X IPA 1 |
SQL ORDER BY ASC
Berikutnya, mari kita ketahui tentang keterangan ASC yang berupa keyword daripada ASCENDING. Kata kunci ASC merupakan default untuk query SQL ORDER BY, di mana hasilnya berupa urutan secara naik atau kebalikan dari DESC.
Artinya, secara numerik ataupun date akan menghasilkan urutan dari kecil ke besar. Sedangkan secara alfabet berarti dari huruf A ke Z.
Telah disebutkan bahwa ASC merupakan default untuk keyword ORDER BY, jika kita tidak menuliskan secara eksplisit keyword ASC
, maka sql akan secara default mengurutkan secara ASC.
Mari kita coba ke contoh pertama dari tabel students
kita pilih acuan pada kolom name tanpa menuliskan keyword ASC.
SELECT
*
FROM
students
ORDER BY
name;
Output:
id | name | class |
---|---|---|
3 | Caca | X IPA 3 |
1 | Dadan | X IPA 1 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
4 | Lala | X IPA 1 |
Contoh kedua, misalkan kita akan mengurutkan secara ASC berdasarkan kolom class dengan menuliskan keyword ASC
secara eksplisit.
SELECT
*
FROM
students
ORDER BY
class
ASC
;
Output:
id | name | class |
---|---|---|
1 | Dadan | X IPA 1 |
4 | Lala | X IPA 1 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
3 | Caca | X IPA 3 |
SQL ORDER BY ASC & DESC
Di contoh kasus sebelumnya kita hanya melakukan sorting dengan satu acuan kolom saja, bagaimana jika kamu ingin mengurutkan berdasarkan beberapa kolom?
Untuk mendemonstrasikan kasus ini, kita perlu menambahkan data baru ke tabel students
agar bisa melihat perbedaannya. Dalam hal ini, tabel students
menjadi seperti berikut.
id | name | class |
---|---|---|
1 | Dadan | X IPA 1 |
2 | Doni | X IPA 2 |
3 | Caca | X IPA 3 |
4 | Lala | X IPA 1 |
5 | Indra | X IPA 2 |
6 | Dadan | X IPA 3 |
Misalkan kita hendak melakukan sorting secara ASC pada tabel tersebut berdasarkan kolom name dan class.
SELECT
*
FROM
students
ORDER BY
name, class;
Output:
id | name | class |
---|---|---|
3 | Caca | X IPA 3 |
1 | Dadan | X IPA 1 |
6 | Dadan | X IPA 3 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
4 | Lala | X IPA 1 |
Berikutnya, misalkan kita ingin mengurutkan secara ASC untuk kolom name, tapi DESC untuk kolom class.
SELECT
*
FROM
students
ORDER BY
name
ASC
, class
DESC
;
Output:
id | name | class |
---|---|---|
3 | Caca | X IPA 3 |
6 | Dadan | X IPA 3 |
1 | Dadan | X IPA 1 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
4 | Lala | X IPA 1 |
Dalam proses sorting menggunakan SQL ORDER BY dengan kasus acuan beberapa kolom untuk mengurutkan terdapat urutan prioritas. Di mana nama kolom yang disebutkan pertama dalam keyword ORDER BY akan menjadi prioritas pertama, dst.
Misalkan kita ingin melakukan sorting seperti pada contoh sebelumnya yaitu kolom name ASC dan kolom class DESC tapi dengan prioritas sorting kolom class.
SELECT
*
FROM
students
ORDER BY
class
DESC
, name
ASC
;
Output:
id | name | class |
---|---|---|
3 | Caca | X IPA 3 |
6 | Dadan | X IPA 3 |
2 | Doni | X IPA 2 |
5 | Indra | X IPA 2 |
1 | Dadan | X IPA 1 |
4 | Lala | X IPA 1 |