Maison >base de données >tutoriel mysql >Comment obtenir les N premières lignes de chaque groupe dans MySQL ?

Comment obtenir les N premières lignes de chaque groupe dans MySQL ?

DDD
DDDoriginal
2025-01-25 12:11:08307parcourir

How to Get the Top N Rows for Each Group in MySQL?

Extraction des N premières lignes pour chaque groupe dans MySQL

Besoin de récupérer les N premières lignes de chaque groupe de vos données MySQL ? La commande standard peut ne pas toujours vous donner les résultats escomptés. Ce guide montre comment utiliser les puissantes fonctions de fenêtre de MySQL, telles que ROW_NUMBER, RANK et DENSE_RANK, pour y parvenir efficacement.

Imaginez un tableau avec PKID (clé primaire), CATID (catégorie) et value colonnes. Pour obtenir les 5 premières lignes de chaque CATID, utilisez la fonction ROW_NUMBER :

<code class="language-sql">SELECT PKID, CATID, value,
ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum
FROM table_name;</code>

ROW_NUMBER attribue un rang unique au sein de chaque CATID groupe, classé par value (décroissant dans ce cas). Pour filtrer uniquement les 5 premiers, enveloppez-le dans une sous-requête :

<code class="language-sql">SELECT PKID, CATID, value
FROM (
  SELECT PKID, CATID, value,
  ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum
  FROM table_name
) AS subquery
WHERE RowNum <= 5;</code>

Cette requête affinée récupère efficacement uniquement les 5 premières lignes par catégorie, offrant une solution précise et optimisée pour vos besoins de récupération de données. N'oubliez pas d'ajuster la condition <= 5 pour contrôler le nombre de lignes supérieures que vous souhaitez par groupe.

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