Heim > Datenbank > MySQL-Tutorial > Warum scheint die ORDER BY-Klausel meiner MariaDB-Unterabfrage ignoriert zu werden?

Warum scheint die ORDER BY-Klausel meiner MariaDB-Unterabfrage ignoriert zu werden?

Susan Sarandon
Freigeben: 2025-01-03 18:02:39
Original
563 Leute haben es durchsucht

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

MySQL/MariaDB: Diskrepanz zwischen Order By-Unterabfragen

In MySQL-Versionen vor 5.5 berücksichtigten Unterabfragen die darin enthaltene ORDER BY-Klausel. Dieses Verhalten hat sich jedoch in neueren Versionen, einschließlich MariaDB 10.0.14, geändert.

Beobachtetes Problem

Beim Ausführen der folgenden Abfrage in MariaDB 10.0.14:

SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
Nach dem Login kopieren

Die Ergebnisse werden nun in aufsteigender Reihenfolge (oder in natürlicher Reihenfolge) sortiert, im Gegensatz zur erwarteten absteigenden Reihenfolge bestellen.

Untersuchung

Nach Prüfung der Dokumentation von MariaDB wird das beobachtete Verhalten nicht als Fehler angesehen. Gemäß dem SQL-Standard sind Tabellen und Unterabfragen ungeordnete Zeilenmengen. Daher kann es sein, dass der Optimierer die ORDER BY-Klausel in der Unterabfrage ignoriert.

Empfohlene Lösung

Um eine konsistente Reihenfolge der Ergebnisse sicherzustellen, wird empfohlen, die ORDER BY-Klausel auf die äußere Abfrage anzuwenden :

SELECT t2.Code from (select Country.Code from Country) AS t2 ORDER BY t2.Code DESC;
Nach dem Login kopieren

Alternativ kann die Verwendung einer LIMIT-Klausel innerhalb der Unterabfrage auch dazu führen, dass ORDER BY aktiviert wird angewendet:

SELECT t2.Code from (select Country.Code from Country ORDER BY Country.Code DESC LIMIT 2) AS t2;
Nach dem Login kopieren

Verhalten in MySQL 5.6

Während spezifische Tests derzeit nicht verfügbar sind, deuten Kommentare zum Fehlerbericht darauf hin, dass MySQL 5.6 möglicherweise auch das gleiche Verhalten wie MariaDB 10.0.14 zeigt, ignoriert die ORDER BY-Klausel in Unterabfragen.

Das obige ist der detaillierte Inhalt vonWarum scheint die ORDER BY-Klausel meiner MariaDB-Unterabfrage ignoriert zu werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage