Maison >base de données >tutoriel mysql >Comment sélectionner les N premières valeurs maximales dans MySQL : renvoyer uniquement N lignes ou inclure des liens ?

Comment sélectionner les N premières valeurs maximales dans MySQL : renvoyer uniquement N lignes ou inclure des liens ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-15 14:41:03556parcourir

How to Select the Top N Maximum Values in MySQL: Return Only N Rows or Include Ties?

MySQL : Sélection des N premières valeurs maximales

Une confusion survient souvent lorsque l'on tente de récupérer les N premières lignes avec les valeurs les plus élevées dans un domaine spécifique colonne. La question est de savoir s'il faut renvoyer uniquement les N premières lignes ou inclure des lignes supplémentaires si elles partagent la même valeur maximale.

Pour obtenir la première solution, la requête suivante suffira :

SELECT *
FROM t
ORDER BY value DESC
LIMIT N

Ceci La requête garantit que seules les N premières lignes sont renvoyées, que les autres lignes aient ou non la même valeur maximale.

Cependant, si l'exigence est d'inclure des lignes avec des valeurs maximales égales, une requête plus complexe est requise :

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, la requête peut être simplifiée :

SELECT *
FROM t
JOIN (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
) tlim
ON t.value = tlim.value;

Enfin, une autre méthode consiste à utiliser la fonction ANY, mais sa compatibilité avec MySQL peut varier :

SELECT *
FROM t
WHERE t.value >= ANY (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
)

Cette approche inclut également des lignes avec la même valeur maximale, offrant une solution conceptuellement claire au problème.

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!

Déclaration:
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