Maison > base de données > tutoriel mysql > le corps du texte

Comment identifier efficacement les N premières valeurs maximales dans MySQL ?

DDD
Libérer: 2024-11-12 05:40:01
original
829 Les gens l'ont consulté

How to Efficiently Identify the Top N Maximum Values in MySQL?

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

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

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

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

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal