Maison >base de données >tutoriel mysql >Comment interroger efficacement les N premiers enregistrements dans plusieurs catégories en SQL ?

Comment interroger efficacement les N premiers enregistrements dans plusieurs catégories en SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 06:11:08518parcourir

How to Efficiently Query Top N Records Across Multiple Categories in SQL?

Récupération des N premiers enregistrements de plusieurs catégories dans SQL

Cette technique SQL récupère efficacement les N premiers enregistrements (par exemple, les 10 premiers) de diverses catégories au sein d'une seule table.

<code class="language-sql">SELECT rs.Field1, rs.Field2
FROM (
    SELECT Field1, Field2,
    RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank
    FROM table
) rs
WHERE Rank <= 10;</code>

Explication :

  • Field1 et Field2 : Celles-ci représentent les colonnes que vous souhaitez récupérer.
  • L'instruction interne SELECT utilise la fonction de fenêtre RANK(). PARTITION BY Section divise les données en groupes en fonction de la catégorie « Section ». ORDER BY RankCriteria DESC trie les enregistrements dans chaque section selon vos critères de classement par ordre décroissant. Rank attribue un rang à chaque enregistrement au sein de sa section.
  • L'instruction SELECT externe filtre les résultats, en ne conservant que les enregistrements avec une valeur Rank de 10 ou moins (Rank <= 10).

Cette méthode est efficace et fonctionne même sur les systèmes de bases de données qui peuvent manquer de fonctions dédiées de limitation de lignes. C'est idéal lorsque les performances sont critiques.

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