Heim > Datenbank > MySQL-Tutorial > Warum funktioniert meine „ORDER BY'-Klausel in einer MySQL/MariaDB-Unterabfrage nicht mehr?

Warum funktioniert meine „ORDER BY'-Klausel in einer MySQL/MariaDB-Unterabfrage nicht mehr?

Patricia Arquette
Freigeben: 2025-01-03 16:22:42
Original
173 Leute haben es durchsucht

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

MySQL/MariaDB: Verhalten von ORDER BY in Unterabfragen ändern

Betrachten Sie die folgende Abfrage, die zuvor erfolgreich in MySQL 5.5 verwendet wurde:

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

In neueren Versionen von MySQL (einschließlich MariaDB 10.0.14) gibt es diese Abfrage nicht mehr Sortiert die Ergebnisse wie erwartet in absteigender Reihenfolge. Diese Verhaltensänderung hat Bedenken hinsichtlich eines möglichen Fehlers geweckt.

Die Untersuchung hat jedoch bestätigt, dass diese Änderung beabsichtigt war und nicht als Fehler angesehen wird. MariaDB hat dieses Verhalten dokumentiert und erklärt, dass eine Unterabfrage einen ungeordneten Satz von Zeilen zurückgibt und dass die ORDER BY-Klausel in der Unterabfrage ignoriert werden kann.

Um die gewünschte Reihenfolge sicherzustellen, wird empfohlen, die ORDER BY-Klausel anzuwenden zur äußersten Abfrage oder fügen Sie bei Bedarf eine LIMIT-Klausel zur Unterabfrage hinzu:

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

Diese überarbeitete Abfrage wendet die Sortierung korrekt an und erzeugt das gewünschte Ergebnis Ergebnisse.

Beachten Sie, dass diese Verhaltensänderung laut Kommentaren zum ursprünglichen Fehlerbericht auch für MySQL 5.6 gilt. Entwickler sollten sich dieser Änderung bewusst sein und ihre Abfragen entsprechend anpassen, um das gewünschte Sortierverhalten beizubehalten.

Das obige ist der detaillierte Inhalt vonWarum funktioniert meine „ORDER BY'-Klausel in einer MySQL/MariaDB-Unterabfrage nicht mehr?. 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