Heim > Datenbank > MySQL-Tutorial > MySQL/MariaDB-Unterabfragen: Warum ändert sich das ORDER BY-Verhalten in neueren Versionen?

MySQL/MariaDB-Unterabfragen: Warum ändert sich das ORDER BY-Verhalten in neueren Versionen?

DDD
Freigeben: 2024-12-31 12:59:17
Original
753 Leute haben es durchsucht

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

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:

  • Outermost Order By: Wenden Sie die Order by-Klausel auf das äußerste SELECT an Anweisung:
  • Limit in Unterabfrage:Gib bei Bedarf ein Limit innerhalb der Unterabfrage an:

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage