Maison > base de données > tutoriel mysql > Comment gérer les valeurs maximales en double lors de la récupération des N premières lignes dans MySQL ?

Comment gérer les valeurs maximales en double lors de la récupération des N premières lignes dans MySQL ?

Linda Hamilton
Libérer: 2024-11-10 20:25:03
original
884 Les gens l'ont consulté

How to Handle Duplicate Maximum Values When Retrieving Top N Rows in MySQL?

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;
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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)
Copier après la connexion

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!

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