MySQL/MariaDB: Sortieren nach innerhalb von Unterabfragen
Neueste Versionen von MySQL und MariaDB haben Änderungen bei der Handhabung der Reihenfolge nach Vorgängen innerhalb von Unterabfragen eingeführt.
Original Abfrage:
Problem:
In MySQL 5.5 und früher sortierte die obige Abfrage die Unterabfrageergebnisse wie angegeben in absteigender Reihenfolge. In neueren Versionen von MySQL und MariaDB werden die Unterabfrageergebnisse jedoch standardmäßig nicht mehr absteigend sortiert.
Grund:
Die Verhaltensänderung ist auf eine strengere Vorgehensweise zurückzuführen Einhaltung des SQL-Standards. Gemäß dem Standard sind Unterabfrageergebnisse ungeordnete Sätze von Zeilen. Daher garantiert die Anwendung einer Order by-Klausel innerhalb einer Unterabfrage möglicherweise nicht die gewünschte Sortierung.
Lösung:
Um das Problem zu beheben, gibt es zwei empfohlene Ansätze:
Dies stellt sicher, dass die Unterabfrage eine sortierte Menge von Ergebnissen erzeugt, unabhängig davon, ob eine order by-Klausel auf die äußerste angewendet wird SELECT.
Dokumentiertes Verhalten:
MariaDB hat dieses Verhalten offiziell dokumentiert und erklärt, dass die Angabe einer Order-by-Klausel innerhalb einer Unterabfrage vom SQL-Standard nicht zulässig ist und sein sollte als ungeordneter Satz von Zeilen behandelt. Der empfohlene Ansatz besteht darin, die Reihenfolge nach auf die äußerste Abfrage anzuwenden oder bei Bedarf ein Limit zu verwenden.
Das obige ist der detaillierte Inhalt vonMySQL/MariaDB-Unterabfragen: Warum ändert sich das ORDER BY-Verhalten in neueren Versionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!