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.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.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!