Identification des N premières valeurs maximales dans MySQL
Dans de nombreux scénarios, interrogation des N premières lignes avec les valeurs les plus élevées dans une colonne spécifique est crucial. Cependant, il peut y avoir une confusion quant à la façon de gérer les cas où plusieurs lignes partagent la même valeur maximale et s'il faut inclure toutes les lignes avec la même valeur ou uniquement le N supérieur.
Pour résoudre ce problème, vous pouvez utiliser l'option méthodes suivantes :
Option 1 : Exact Top N
À l'aide de la clause LIMIT, vous pouvez récupérer les N premières lignes exactes dans ordre décroissant par valeur, en excluant toutes les lignes ayant la même valeur :
SELECT * FROM t ORDER BY value DESC LIMIT N
Option 2 : Top N inclus
Si vous souhaitez inclure toutes les lignes avec la même valeur valeur maximale, même s'il y a plus de N lignes avec cette valeur, vous pouvez utiliser l'approche suivante :
Rejoignez la table avec une sous-requête qui trouve la valeur seuil minimale pour le top N :
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.cutoff
Alternativement, vous pouvez utiliser une version simplifiée :
SELECT * FROM t JOIN ( SELECT value FROM t ORDER BY value LIMIT N ) tlim ON t.value = tlim.value
Alternative conceptuelle (facultatif)
Bien que la requête suivante capture conceptuellement le comportement souhaité, elle peut ne pas fonctionner dans MySQL :
SELECT * FROM t WHERE t.value >= ANY (SELECT value FROM t ORDER BY value LIMIT N)
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!