DIPESAN OLEH di MySQL: Kueri ASC & DESC dengan Contoh
โก Ringkasan Cerdas
DIPESAN OLEH di MySQL Mengurutkan hasil kueri dalam urutan menaik atau menurun melalui kata kunci ASC dan DESC. Bagian di bawah ini menjelaskan sintaks, pengurutan kolom tunggal dan multi-kolom, penempatan NULL, dan contoh yang dijalankan pada basis data sampel myflixdb.

Apa itu ORDER BY di MySQL?
MySQL DIPESAN OLEH adalah klausa yang digunakan dengan kueri SELECT untuk mengurutkan data secara teratur. MySQL Klausul ORDER BY mengurutkan hasil kueri dalam urutan menaik atau menurun, berdasarkan satu kolom atau beberapa kolom sekaligus.
Saat perintah SELECT digunakan sendiri, baris akan dikembalikan sesuai urutan saat mesin penyimpanan membacanya, yang bukan merupakan urutan yang terjamin. Pengurutan hanyalah penataan ulang baris-baris tersebut dalam urutan tertentu. Pengurutan dapat dilakukan pada tipe data numerik, string, dan tanggal.
MySQL Sintaks ORDER BY
Sebelum melihat contoh, ada baiknya untuk melihat di mana klausa tersebut berada di dalam pernyataan SELECT lengkap.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
SINI
- "PILIH pernyataanรข โฌ | รข โฌ adalah kueri select biasa.
- โ | โ mewakili alternatif.
- โ[WHERE condition | GROUP BY `field_name(s)` HAVING condition]โ adalah kondisi opsional yang digunakan untuk memfilter hasil kueri.
- "DIPESAN OLEH" Melakukan pengurutan hasil kueri.
- โ[ASC | DESK]โ adalah kata kunci yang digunakan untuk mengurutkan hasil dalam urutan naik atau turun. Perhatikan bahwa ASC adalah defaultnya.
Apa itu Kata Kunci DESC dan ASC?
ASC dan DESC adalah dua arah pengurutan yang diterima oleh ORDER BY. Tabel di bawah ini membandingkan keduanya di berbagai tipe data yang paling sering Anda urutkan.
ASC adalah kependekan dari ascending |
MySQL DESC adalah kependekan dari descending |
|---|---|
| Digunakan untuk mengurutkan hasil query dengan gaya atas ke bawah. | Ini digunakan untuk mengurutkan hasil kueri dari bawah ke atas. |
| Saat mengerjakan tipe data tanggal, tanggal paling awal ditampilkan di bagian atas daftar. | Saat bekerja dengan tipe data tanggal, tanggal terbaru akan ditampilkan di bagian atas daftar. |
| Saat bekerja dengan tipe data numerik, nilai terendah ditampilkan di bagian atas daftar. | Saat bekerja dengan tipe data numerik, nilai tertinggi akan ditampilkan di bagian atas hasil kueri. |
| Saat bekerja dengan tipe data string, kumpulan hasil kueri diurutkan dari yang dimulai dengan huruf A hingga huruf Z. | Saat bekerja dengan tipe data string, kumpulan hasil kueri diurutkan dari yang dimulai dengan huruf Z hingga huruf A. |
Baik kata kunci SQL DESC maupun ASC digunakan bersamaan dengan pernyataan SELECT dan MySQL klausa ORDER BY.
Sintaks DESC dan ASC
Kata kunci sort SQL DESC memiliki sintaksis dasar berikut.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
SINI
- PILIH {Nama Bidang | *} DARI Nama tabel adalah pernyataan yang berisi kolom dan tabel tempat hasil set akan diambil.
- [Kondisi MANA] bersifat opsional tetapi dapat digunakan untuk memfilter data sesuai dengan kondisi yang diberikan.
- Urutkan berdasarkan nama kolom Ini wajib dan menyebutkan kolom tempat pengurutan dilakukan. MySQL Kata kunci DESC menentukan bahwa pengurutan dilakukan dalam urutan menurun.
- [BATAS N] Opsional, tetapi dapat digunakan untuk membatasi jumlah baris yang dikembalikan dari hasil kueri.
Mengapa Menggunakan DESC dan ASC di MySQL?
Mengetahui sintaks hanyalah setengah dari gambaran keseluruhan. Alasan mengapa ORDER BY ada adalah karena kumpulan hasil yang mudah dihasilkan oleh basis data tidak selalu mudah dibaca oleh manusia.
Misalkan Anda mencetak riwayat pembayaran untuk anggota perpustakaan video agar petugas di meja depan dapat menjawab pertanyaan dengan cepat. Akan jauh lebih logis jika riwayat pembayaran dicetak dalam urutan kronologis menurun, dimulai dari pembayaran terbaru dan mundur ke pembayaran terlama. Kata kunci DESC dalam SQL sangat berguna dalam situasi seperti ini, karena daftar dapat diurutkan berdasarkan tanggal pembayaran.
Sekarang, misalkan departemen pemasaran menginginkan daftar film berdasarkan kategori, sehingga anggota dapat melihat judul mana yang dimiliki perpustakaan sebelum menyewa. Mengurutkan nama kategori dan judul film dalam urutan menaik memungkinkan anggota untuk mencari informasi dengan cepat, persis seperti yang mereka lakukan dalam indeks. Kata kunci ASC berfungsi untuk tujuan tersebut.
Singkatnya, ORDER BY mengubah kumpulan hasil mentah menjadi laporan. Kata kunci yang Anda pilih bergantung pada pertanyaan yang diajukan pembaca: apa yang terjadi baru-baru ini seruan untuk DESC, sementara Di mana saya bisa menemukan barang ini? seruan untuk ASC.
MySQL Contoh ORDER BY
Semua contoh berikut dijalankan terhadap basis data sampel myflixdb. Mulailah dengan tabel anggota yang belum diurutkan, yang dikembalikan dalam urutan defaultnya.
SELECT * FROM members;
Menjalankan skrip di atas dalam MySQL Pengujian Workbench terhadap myflixdb memberikan hasil sebagai berikut, seperti yang ditunjukkan di bawah ini.
| Nomor keanggotaan | nama lengkap | jenis kelamin | tanggal_lahir | alamat fisik | alamat pos | nomor_kontak | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Perempuan | 21-07-1980 | Plot Jalan Pertama No 4 | Tas Pribadi | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Perempuan | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Pria | 12-07-1989 | Jalan ke-3 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Perempuan | 14-02-1984 | Jalan ke-2 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Pria | NULL | jambul kayu | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Pria | NULL | jambul kayu | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Pria | NULL | jambul kayu | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Pria | 14-02-1984 | jambul kayu | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Pria | 24-08-1981 | Taman Selatan | PO Box 4563 | 987786553 | NULL |
Mengurutkan dalam Urutan Menurun dengan DESC
Misalkan departemen pemasaran menginginkan detail anggota diurutkan berdasarkan tanggal lahir dari yang terendah hingga tertinggi. Ini membantu tim mengirimkan ucapan selamat ulang tahun tepat waktu. Daftar tersebut dihasilkan oleh kueri di bawah ini.
SELECT * FROM members ORDER BY date_of_birth DESC;
Menjalankan skrip di atas dalam MySQL Pengujian Workbench terhadap myflixdb memberikan hasil sebagai berikut, seperti yang ditunjukkan di bawah ini.
Mengurutkan dalam Urutan Naik dengan ASC
Kueri yang sama dalam urutan menaik hanya menukar kata kuncinya.
SELECT * FROM members ORDER BY date_of_birth ASC;
Catatan: NULL berarti tidak ada nilai sama sekali, yang berbeda dengan nol atau string kosong. Perhatikan pada kedua tangkapan layar bagaimana tanggal NULL dikelompokkan bersama: MySQL Memperlakukan nilai NULL sebagai nilai yang lebih rendah daripada nilai lainnya, sehingga baris berisi nilai NULL muncul pertama kali dalam urutan ASC dan terakhir dalam urutan DESC.
Cara Mengurutkan Berdasarkan Beberapa Kolom di MySQL
Pengurutan berdasarkan satu kolom menjawab pertanyaan sederhana. Laporan biasanya membutuhkan pengurutan tingkat kedua, dan ORDER BY menerima daftar kolom yang dipisahkan koma untuk tujuan tersebut.
Perhatikan skrip pengurutan SQL berikut yang mencantumkan semua catatan anggota tanpa arahan eksplisit apa pun.
SELECT * FROM `members`;
Menjalankan skrip di atas akan memberikan hasil seperti yang ditunjukkan di bawah ini.
| Nomor keanggotaan | nama lengkap | jenis kelamin | tanggal_lahir | alamat fisik | alamat pos | nomor_kontak | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Perempuan | 21-07-1980 | Plot Jalan Pertama No 4 | Tas Pribadi | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Perempuan | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Pria | 12-07-1989 | Jalan ke-3 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Perempuan | 14-02-1984 | Jalan ke-2 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Pria | NULL | jambul kayu | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Pria | NULL | jambul kayu | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Pria | NULL | jambul kayu | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Pria | 14-02-1984 | jambul kayu | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Pria | 24-08-1981 | Taman Selatan | PO Box 4563 | 987786553 | NULL |
Mengurutkan Satu Kolom Berdasarkan Urutan Default
Misalkan kita menginginkan daftar yang mengurutkan hasil kueri menggunakan kolom jenis kelamin. Skrip di bawah ini melakukan hal itu tanpa menyebutkan arah.
SELECT * FROM `members` ORDER BY `gender`;
| Nomor keanggotaan | nama lengkap | jenis kelamin | tanggal_lahir | alamat fisik | alamat pos | nomor_kontak | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Perempuan | 21-07-1980 | Plot Jalan Pertama No 4 | Tas Pribadi | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Perempuan | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Perempuan | 14-02-1984 | Jalan ke-2 23 | NULL | NULL | NULL |
| 3 | Robert Phil | Pria | 12-07-1989 | Jalan ke-3 34 | NULL | 12345 | rm@tstreet.com |
| 5 | Leonard Hofstadter | Pria | NULL | jambul kayu | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Pria | NULL | jambul kayu | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Pria | NULL | jambul kayu | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Pria | 14-02-1984 | jambul kayu | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Pria | 24-08-1981 | Taman Selatan | PO Box 4563 | 987786553 | NULL |
Anggota "Perempuan" ditampilkan terlebih dahulu, diikuti oleh anggota "Laki-laki". Hal ini karena ketika klausa ORDER BY digunakan tanpa menentukan ASC atau MySQL kata kunci DESC, MySQL Secara default, hasil kueri diurutkan dalam urutan menaik.
Mengurutkan Dua Kolom dalam Arah yang Berlawanan
Sekarang mari kita lihat sebuah contoh yang melakukan hal tersebut. pengurutan menggunakan dua kolomKolom pertama adalah diurutkan in urutan menaik secara default, sedangkan kolom kedua adalah diurutkan in urutan menurun.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
Menjalankan skrip di atas dalam MySQL Pengujian Workbench terhadap myflixdb memberikan hasil sebagai berikut.
Kolom jenis kelamin diurutkan secara menaik secara default, sedangkan kolom tanggal lahir diurutkan secara menurun secara eksplisit. Setiap kata kunci arah hanya berlaku untuk kolom yang mengikutinya.
Cara Menggabungkan ORDER BY dengan WHERE, LIMIT, dan GROUP BY
ORDER BY jarang menjadi satu-satunya klausa dalam kueri produksi. MySQL selalu mengevaluasi klausa dalam urutan tetap, dan mengetahui urutan tersebut menjelaskan mengapa hasilnya terlihat seperti itu.
- DARI Membaca baris-baris dari tabel.
- MANA Membuang baris yang tidak memenuhi kondisi.
- KELOMPOK OLEH menggabungkan baris yang tersisa menjadi beberapa kelompok, dan HAVING menyaring kelompok-kelompok tersebut.
- DIPESAN OLEH mengurutkan baris apa pun yang tersisa.
- MEMBATASI Memotong sejumlah baris yang diminta dari daftar yang sudah diurutkan.
Karena ORDER BY dijalankan setelah WHERE dan GROUP BY tetapi sebelum LIMIT, kueri seperti โlima anggota termuda dari Woodcrestโ dinyatakan dalam satu pernyataan.
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
Urutan yang sama berlaku untuk hasil yang dikelompokkan. Nilai agregat yang dihasilkan oleh fungsi agregat Misalnya, data COUNT dapat diurutkan, sehingga kategori yang paling banyak dikunjungi akan muncul di bagian atas laporan.
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
olymp trade indonesiaTip: klausa ORDER BY dapat mengurutkan berdasarkan alias kolom, ekspresi, atau bahkan posisi kolom seperti ORDER BY 3. Pengurutan berdasarkan posisi agak rentan, karena memasukkan kolom baru ke dalam daftar SELECT secara diam-diam mengubah kunci pengurutan. Sebaiknya sebutkan nama kolomnya saja.
Satu poin kinerja yang perlu diingat. Ketika kolom yang diurutkan memiliki indeks, MySQL dapat membaca baris sesuai urutan indeks dan melewati pengurutan sama sekali. Tanpa indeks, tabel besar memaksa pengurutan file di memori atau di disk, yang biasanya menjadi alasan mengapa kueri laporan menjadi lambat.

ASC adalah kependekan dari ascending
MySQL DESC adalah kependekan dari descending

