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
Libérer: 2025-01-25 12:11:08
original
312 Les gens l'ont consulté

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

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

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!

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