Rumah > pangkalan data > tutorial mysql > Subqueries MySQL/MariaDB: Mengapa ORDER BY Behavior Berubah dalam Versi Baru?

Subqueries MySQL/MariaDB: Mengapa ORDER BY Behavior Berubah dalam Versi Baru?

DDD
Lepaskan: 2024-12-31 12:59:17
asal
741 orang telah melayarinya

MySQL/MariaDB Subqueries: Why Does ORDER BY Behavior Change in Newer Versions?

MySQL/MariaDB: Susun mengikut dalam Subkueri

Versi terbaru MySQL dan MariaDB telah memperkenalkan perubahan dalam pengendalian pesanan mengikut operasi dalam subkueri.

Asal Pertanyaan:

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

Isu:

Dalam MySQL 5.5 dan lebih awal, pertanyaan di atas mengisih hasil subkueri dalam susunan menurun seperti yang dinyatakan. Walau bagaimanapun, dalam versi MySQL dan MariaDB yang lebih baharu, hasil subkueri tidak lagi diisih secara menurun secara lalai.

Sebab:

Perubahan dalam tingkah laku adalah disebabkan oleh yang lebih ketat pematuhan kepada standard SQL. Mengikut piawaian, hasil subkueri ialah set baris yang tidak tertib. Oleh itu, menggunakan perintah mengikut klausa dalam subkueri mungkin tidak menjamin pengisihan yang diingini.

Penyelesaian:

Untuk menyelesaikan isu, terdapat dua pendekatan yang disyorkan:

  • Tertib Terluar Oleh: Terapkan tertib mengikut klausa ke terluar PILIH pernyataan:
SELECT t2.Code from (select Country.Code from Country) AS t2 ORDER BY t2.Code DESC;
Salin selepas log masuk
  • Had dalam Subkueri: Jika perlu, nyatakan had dalam subkueri:
SELECT t2.Code from (select Country.Code from Country ORDER BY Country.Code DESC LIMIT 2) AS t2;
Salin selepas log masuk

Ini memastikan bahawa subkueri menghasilkan set hasil yang diisih, tidak kira sama ada susunan mengikut klausa digunakan pada yang paling luar. PILIH.

Tingkah Laku Berdokumen:

MariaDB telah mendokumentasikan tingkah laku ini secara rasmi, dengan menyatakan bahawa menetapkan perintah mengikut klausa dalam subkueri tidak dibenarkan oleh standard SQL dan harus dianggap sebagai set baris yang tidak tersusun. Pendekatan yang disyorkan ialah menggunakan tertib mengikut kepada pertanyaan paling luar atau menggunakan had jika perlu.

Atas ialah kandungan terperinci Subqueries MySQL/MariaDB: Mengapa ORDER BY Behavior Berubah dalam Versi Baru?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan