Rumah >pangkalan data >tutorial mysql >Mengapakah ORDER BY Subquery MariaDB Saya Nampaknya Diabaikan?
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.
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;
Hasilnya kini diisih dalam susunan menaik (atau mengikut susunan semula jadi), berbeza dengan penurunan yang dijangkakan pesanan.
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.
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;
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;
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!