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

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

Patricia Arquette
Libérer: 2024-11-15 14:41:03
original
481 Les gens l'ont consulté

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

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

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

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

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!

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