Sélection des N premières valeurs maximales dans MySQL
Déterminer le comportement correct lors de la récupération des N premières lignes avec les valeurs les plus élevées peut être difficile, en particulier lorsque plusieurs lignes partagent la même valeur maximale. Cet article aborde la question de savoir s'il faut renvoyer uniquement les N premières lignes ou inclure des lignes supplémentaires avec la même valeur.
Pour obtenir les N premières lignes distinctes, la requête suivante peut être utilisée :
select * from t order by value desc limit N;
Cette requête récupère les N premières lignes en fonction de l'ordre décroissant de la colonne de valeurs. Cependant, si plusieurs lignes partagent la Nième valeur maximale, seules les N premières lignes seront renvoyées, à l'exclusion de toutes les lignes avec des valeurs identiques.
Dans les scénarios où il est nécessaire de renvoyer toutes les lignes avec la même valeur maximale, le La requête suivante peut être utilisée :
select * from t join (select min(value) as cutoff from (select value from t order by value limit N ) tlim ) tlim on t.value >= tlim;
Alternativement, une version simplifiée de la requête ci-dessus peut être used :
select * from t join (select value from t order by value limit N ) tlim on t.value = tlim.value;
Ces deux requêtes renvoient non seulement les N premières lignes, mais également toutes les lignes supplémentaires partageant la même valeur maximale.
Bien que la requête suivante obtienne conceptuellement le résultat souhaité, il peut ne pas être compatible avec MySQL en raison de limitations spécifiques à la base de données :
select * from t where t.value >= ANY (select value from t order by value limit N)
En comprenant les différentes méthodes disponibles, les développeurs peuvent sélectionner la requête appropriée en fonction de leurs besoins spécifiques lors de la récupération des N premières valeurs maximales dans MySQL.
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!