Maison >base de données >tutoriel mysql >Comment obtenir les N premières lignes de chaque groupe dans 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!