Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tanda hubung dalam urutan MySQL dengan klausa

Jawabannya ada di pertanyaan:

Kata kuncinya di sini adalah "ekspresi" . Anda dapat menggunakan ekspresi di ORDER BY klausa.

ORDER BY -order_line_groups.sequence DESC

adalah ekspresi aritmatika dan "tanda hubung" bukan tanda hubung tetapi minus; operator matematika unary dikurangi.

Bagaimana cara kerjanya?

Mengenai hasilnya, ini berfungsi seperti yang diharapkan:

  • Jika tipe kolom order_line_groups.sequence adalah tipe numerik atau jenis tanggal &waktu (mereka juga disimpan secara internal sebagai angka) kemudian minus membalikkan urutan baris yang dikembalikan. Klausa tersebut setara dengan

      ORDER BY order_line_groups.sequence ASC
    
  • Jika tipe kolom adalah tipe string kemudian MySQL mencoba untuk mengonversi nilai dari kolom ke angka (karena pengurangan adalah operasi aritmatika dan tidak didefinisikan untuk string). Ketika MySQL mengonversi string menjadi angka, ia berhenti pada karakter pertama yang bukan digit. Tergantung pada data yang Anda simpan di kolom order_line_groups.sequence , kurang lebih nilai stringnya akan dikonversi ke angka 0 .

Mengenai kecepatan, seperti yang dijelaskan di halaman dokumentasi yang disediakan dalam pertanyaan MySQL tidak dapat menggunakan indeks untuk menyelesaikan ORDER BY . Ini membuat kueri menjadi lambat.

Kesimpulan

Menggunakan ORDER BY -order_line_groups.sequence membuat kueri menjadi lambat. Lebih lanjut, itu tidak memberikan cara yang baik untuk mengurutkan hasil yang ditetapkan ketika jenis kolom sequence adalah tipe string.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Boto3 untuk berinteraksi dengan amazon Aurora di RDS

  2. Menggunakan folder data MySQL sebelumnya pada instalasi MySQL baru

  3. Apakah aman untuk membiarkan pengguna menentukan bidang mysql untuk mencari?

  4. Pilih semua catatan yang tidak memenuhi kondisi tertentu dalam tabel gabungan

  5. Pilih nilai yang memenuhi kondisi berbeda pada baris berbeda?