Rumah > pangkalan data > tutorial mysql > Mengapakah ORDER BY Subquery MariaDB Saya Nampaknya Diabaikan?

Mengapakah ORDER BY Subquery MariaDB Saya Nampaknya Diabaikan?

Susan Sarandon
Lepaskan: 2025-01-03 18:02:39
asal
619 orang telah melayarinya

Why Does My MariaDB Subquery's ORDER BY Clause Seem to Be Ignored?

MySQL/MariaDB: Pesanan Mengikut Percanggahan Subkueri

Dalam versi MySQL sebelum 5.5, subqueries menghormati klausa ORDER BY dalam. Walau bagaimanapun, tingkah laku ini telah berubah dalam versi terkini, termasuk MariaDB 10.0.14.

Isu Diperhatikan

Apabila melaksanakan pertanyaan berikut dalam MariaDB 10.0.14:

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

Hasilnya kini diisih dalam susunan menaik (atau mengikut susunan semula jadi), berbeza dengan penurunan yang dijangkakan pesanan.

Penyiasatan

Selepas meneliti dokumentasi MariaDB, tingkah laku yang diperhatikan tidak dianggap sebagai pepijat. Menurut standard SQL, jadual dan subkueri ialah set baris yang tidak tertib. Oleh itu, pengoptimum boleh memilih untuk mengabaikan klausa ORDER BY dalam subquery.

Disyorkan Penyelesaian

Untuk memastikan susunan hasil yang konsisten, adalah disyorkan untuk menggunakan klausa ORDER BY pada pertanyaan luar :

SELECT t2.Code from (select Country.Code from Country) AS t2 ORDER BY t2.Code DESC;
Salin selepas log masuk

Sebagai alternatif, menggunakan klausa LIMIT dalam subkueri juga boleh memaksa ORDER BY untuk digunakan:

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

Gelagat dalam MySQL 5.6

Walaupun ujian khusus tidak tersedia pada masa ini, ulasan pada laporan pepijat mencadangkan bahawa MySQL 5.6 mungkin juga menunjukkan tingkah laku yang sama seperti MariaDB 10.0 .14, mengabaikan klausa ORDER BY dalam subqueries.

Atas ialah kandungan terperinci Mengapakah ORDER BY Subquery MariaDB Saya Nampaknya Diabaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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