Mengurutkan Data — SQL

Gunakan ORDER BY untuk mengurutkan hasil query. Ascending (kecil ke besar) — default: SELECT * FROM users ORDER BY name; SELECT * FROM users ORDER BY name…

ORDER BY menyusun baris hasil SELECT menurut satu kolom atau lebih, dari kecil ke besar atau dari besar ke kecil. Bayangin wali kelas menyusun daftar ranking: nilai tertinggi di atas, dan kalau ada dua siswa dengan nilai sama, yang namanya duluan di abjad ditaruh lebih dulu. Itu persis yang dikerjakan ORDER BY: urutan pertama, lalu urutan kedua untuk yang seri.

🧪 Tebakan cepat: Dewi dan Andi sama-sama dapat 90. Dengan ORDER BY grade DESC saja, siapa yang muncul duluan? Tebak dulu, jawabannya ada di bagian "Dua kunci: kalau nilainya seri".

Tanpa ORDER BY, urutan gak dijamin

Ini tabel students yang dipakai di Lab dan latihan:

SELECT * FROM students;
id name grade city
1 Dewi 90 Jakarta
2 Rizky 85 Bandung
3 Maya 92 Surabaya
4 Andi 90 Jakarta
5 Budi 88 Bandung

SQLite mengembalikan baris dalam urutan dia menyimpannya, jadi kelihatannya urut id. Tapi itu kebetulan, bukan janji. Database boleh mengembalikan baris dalam urutan apa pun, dan urutannya bisa berubah setelah data diubah atau tabelnya makin besar. Kalau urutan penting, tulis ORDER BY.

ASC dan DESC

SELECT * FROM students
ORDER BY grade DESC;
id name grade city
3 Maya 92 Surabaya
1 Dewi 90 Jakarta
4 Andi 90 Jakarta
5 Budi 88 Bandung
2 Rizky 85 Bandung

Dua kunci: kalau nilainya seri

Di hasil tadi Dewi muncul sebelum Andi. Itu cuma karena Dewi disimpan lebih dulu. Query-nya gak bilang apa-apa soal nilai yang seri, jadi database lain (atau SQLite yang sama setelah tabelnya berubah) boleh saja menaruh Andi duluan. Itu jawaban tebakannya: dengan grade DESC saja, urutan Dewi dan Andi gak ditentukan.

Tambahkan kunci kedua, dipisah koma:

SELECT * FROM students
ORDER BY grade DESC, name ASC;
id name grade city
3 Maya 92 Surabaya
4 Andi 90 Jakarta
1 Dewi 90 Jakarta
5 Budi 88 Bandung
2 Rizky 85 Bandung

💡 Beda SQLite, MySQL, dan PostgreSQL

⚠️ Jebakan yang sering ketemu

TL;DR: ORDER BY kolom mengurutkan hasil query. ASC dari kecil ke besar (A ke Z) dan jadi bawaan kalau gak ditulis, DESC dari besar ke kecil (Z ke A). Tanpa ORDER BY urutan baris gak dijamin. Untuk nilai seri, tambahkan kunci kedua di ORDER BY yang sama, dipisah koma, dengan arahnya sendiri: ORDER BY grade DESC, name ASC. Satu query, satu ORDER BY.

Yang akan kamu pelajari