Heim >Datenbank >MySQL-Tutorial >Warum funktioniert meine „ORDER BY'-Klausel in einer MySQL/MariaDB-Unterabfrage nicht mehr?
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;
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;
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!