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.

  • ๐Ÿ”  Perilaku Default: ORDER BY mengurutkan dalam urutan menaik ketika ASC maupun DESC tidak disebutkan, sehingga ASC bersifat opsional dalam sebagian besar pernyataan.
  • ๏ธ Kata Kunci ASC: ASC menyusun angka dari terendah ke tertinggi, string dari A ke Z, dan tanggal dari paling awal ke paling akhir.
  • (I.e. Kata kunci DESC: DESC membalik urutan tersebut, yang sesuai dengan riwayat pembayaran yang dimulai dari yang terbaru dan daftar tanggal lahir yang menurun.
  • ๐Ÿงฎ Pengurutan Multi-Kolom: Urutan kolom penting. ORDER BY gender, date_of_birth DESC mengurutkan jenis kelamin secara menaik terlebih dahulu, kemudian tanggal secara menurun di dalam setiap kelompok.
  • ๐Ÿ”Ž Kombinasi Klausa: WHERE memfilter baris, GROUP BY menggabungkan baris, ORDER BY mengurutkan hasilnya, dan LIMIT memangkasnya.
  • โš™๏ธ Faktor Kinerja: Indeks pada kolom yang diurutkan memungkinkan MySQL untuk menghindari operasi pengurutan berkas pada tabel besar.

DIPESAN OLEH di MySQL

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.

Kata Kunci DESC dan ASCASC adalah kependekan dari ascending Kata Kunci DESC dan ASCMySQL 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 email
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.

MySQL Hasil kueri ORDER BY DESC

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;

MySQL Hasil kueri ORDER BY 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 email
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 email
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.

MySQL Contoh ORDER BY dua kolom

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.

  1. DARI Membaca baris-baris dari tabel.
  2. MANA Membuang baris yang tidak memenuhi kondisi.
  3. KELOMPOK OLEH menggabungkan baris yang tersisa menjadi beberapa kelompok, dan HAVING menyaring kelompok-kelompok tersebut.
  4. DIPESAN OLEH mengurutkan baris apa pun yang tersisa.
  5. 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.

Pertanyaan Umum Demo Slot

Bisa. Tanpa indeks pada kolom yang diurutkan, MySQL Melakukan pengurutan file (filesort) pada seluruh hasil pencarian. Menambahkan indeks yang sesuai dengan kolom dan arah ORDER BY memungkinkan server membaca baris secara berurutan dan melewati langkah tersebut.

Biasanya tidak. Kolasi default seperti utf8mb4_0900_ai_ci tidak peka terhadap huruf besar/kecil, sehingga โ€œappleโ€ dan โ€œAppleโ€ diurutkan bersama. Kolasi biner atau _cs, atau ORDER BY BINARY column_name, menghasilkan pengurutan yang peka terhadap huruf besar/kecil di mana huruf besar berada di urutan pertama.

Ya. ORDER BY RAND() mengacak hasil pencarian, yang berguna untuk memilih film atau anggota secara acak. Fungsi ini memberi skor pada setiap baris sebelum diurutkan, jadi pasangkan dengan LIMIT dan hindari penggunaannya pada tabel yang sangat besar.

Ya. Fitur bantuan AI yang terintegrasi dalam alat-alat seperti... MySQL Workbench Ubah permintaan dalam bahasa biasa menjadi pernyataan SELECT dengan ORDER BY. Selalu tinjau kolom dan arah pengurutan yang dihasilkan, karena AI tidak dapat mengetahui urutan mana yang dibutuhkan laporan Anda.

Sebagian. Penasihat berbasis AI membaca log kueri yang lambat dan menyarankan indeks yang menghilangkan operasi pengurutan berkas (filesort). Saran tersebut masih perlu ditinjau oleh manusia, karena setiap indeks tambahan memperlambat penyisipan dan pembaruan pada tabel yang sama.

Ringkaslah postingan ini dengan: