Rumah > pangkalan data > tutorial mysql > Mengapa Klausa `ORDER BY` Saya dalam Subkueri MySQL/MariaDB Tidak Berfungsi Lagi?

Mengapa Klausa `ORDER BY` Saya dalam Subkueri MySQL/MariaDB Tidak Berfungsi Lagi?

Patricia Arquette
Lepaskan: 2025-01-03 16:22:42
asal
155 orang telah melayarinya

Why Does My `ORDER BY` Clause in a MySQL/MariaDB Subquery No Longer Work?

MySQL/MariaDB: Mengubah Gelagat ORDER BY dalam Subqueries

Pertimbangkan pertanyaan berikut, yang sebelum ini berjaya digunakan dalam MySQL 5.5:

SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
Salin selepas log masuk

Dalam versi terbaru MySQL (termasuk MariaDB 10.0.14), pertanyaan ini tidak lagi mengisih keputusan dalam tertib menurun seperti yang dijangkakan. Perubahan dalam tingkah laku ini telah menimbulkan kebimbangan tentang kemungkinan pepijat.

Walau bagaimanapun, setelah disiasat, telah disahkan bahawa perubahan ini adalah disengajakan dan tidak dianggap sebagai pepijat. MariaDB telah mendokumentasikan tingkah laku ini, menjelaskan bahawa subkueri mengembalikan set baris yang tidak tertib dan klausa ORDER BY dalam subquery mungkin diabaikan.

Untuk memastikan susunan yang diingini, adalah disyorkan untuk menggunakan klausa ORDER BY pada pertanyaan terluar atau, jika perlu, tambah klausa LIMIT pada subquery:

SELECT t2.Code 
FROM (
  SELECT Country.Code FROM Country ORDER BY Country.Code DESC LIMIT 2
) AS t2;
Salin selepas log masuk

Pertanyaan yang disemak ini menggunakan jenis dengan betul dan menghasilkan hasil yang diingini.

Perhatikan bahawa perubahan dalam tingkah laku ini juga digunakan untuk MySQL 5.6, menurut ulasan pada laporan pepijat asal . Pembangun harus menyedari perubahan ini dan melaraskan pertanyaan mereka dengan sewajarnya untuk mengekalkan gelagat pengisihan yang diingini.

Atas ialah kandungan terperinci Mengapa Klausa `ORDER BY` Saya dalam Subkueri MySQL/MariaDB Tidak Berfungsi Lagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan