Maison > base de données > tutoriel mysql > Pourquoi ma clause « ORDER BY » dans une sous-requête MySQL/MariaDB ne fonctionne-t-elle plus ?

Pourquoi ma clause « ORDER BY » dans une sous-requête MySQL/MariaDB ne fonctionne-t-elle plus ?

Patricia Arquette
Libérer: 2025-01-03 16:22:42
original
155 Les gens l'ont consulté

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

MySQL/MariaDB : Modification du comportement de ORDER BY dans les sous-requêtes

Considérez la requête suivante, précédemment utilisée avec succès dans MySQL 5.5 :

SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
Copier après la connexion

Dans les versions récentes de MySQL (dont MariaDB 10.0.14), cette requête n'est plus trie les résultats par ordre décroissant comme prévu. Ce changement de comportement a soulevé des inquiétudes concernant un bug potentiel.

Cependant, après enquête, il a été confirmé que ce changement est intentionnel et n'est pas considéré comme un bug. MariaDB a documenté ce comportement, expliquant qu'une sous-requête renvoie un ensemble de lignes non ordonnées et que la clause ORDER BY dans la sous-requête peut être ignorée.

Pour garantir l'ordre souhaité, il est recommandé d'appliquer la clause ORDER BY à la requête la plus externe ou, si nécessaire, ajoutez une clause LIMIT à la sous-requête :

SELECT t2.Code 
FROM (
  SELECT Country.Code FROM Country ORDER BY Country.Code DESC LIMIT 2
) AS t2;
Copier après la connexion

Cette requête révisée applique correctement le tri et produit le résultat souhaité résultats.

Notez que ce changement de comportement s'applique également à MySQL 5.6, selon les commentaires sur le rapport de bug original. Les développeurs doivent être conscients de ce changement et ajuster leurs requêtes en conséquence pour maintenir le comportement de tri souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal