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

mysql:bagaimana cara menyimpan ORDER BY setelah LEFT JOIN tanpa menyusun ulang?

(Menjelaskan hilangnya ORDER BY )

Standar SQL pada dasarnya mengatakan bahwa subquery adalah kumpulan baris yang tidak berurutan. Ini menyiratkan bahwa Pengoptimal bebas mengabaikan ORDER BY dalam tabel 'turunan':FROM ( SELECT ... ORDER BY ) . Dalam versi MySQL dan MariaDB "terbaru", seperti ORDER BYs sedang dijatuhkan. Ada kasus lain di mana ORDER BY diabaikan.

Dalam beberapa situasi (tidak yakin tentang yang satu ini), menambahkan LIMIT 99999999 (angka besar) setelah ORDER BY menipu Pengoptimal untuk melakukan ORDER BY . Namun, masih bebas untuk mengabaikan "pesanan" nanti.

Aturan umum untuk MySQL:Hindari subquery. (Ada kasus di mana subkueri lebih cepat, tetapi bukan milik Anda.)

Aturan yang kuat:Anda harus memiliki ORDER BY paling luar jika Anda ingin hasilnya diurutkan.

Jika Anda telah menambahkan LIMIT 3 ke tabel turunan dalam kueri pertama Anda, Anda hanya akan mendapatkan CHARLES, DAVID, JAMES, tetapi tidak harus dalam urutan itu . Artinya, Anda memerlukan dua ORDER BYs - satu di tabel turunan, satu di bagian paling akhir.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara membuat daftar hasil kueri mysql dalam urutan tertentu?

  2. Pilih kueri menggunakan kondisi

  3. Bagaimana cara menerapkan sistem komentar bersarang?

  4. Susunan MySQL untuk menyimpan data multibahasa dari bahasa yang tidak dikenal

  5. Menghitung radius koordinat gps