Maison > base de données > tutoriel mysql > le corps du texte

Comment sélectionner les 3 premières lignes de chaque catégorie dans MySQL sans fonctions analytiques ?

Patricia Arquette
Libérer: 2024-10-27 23:23:30
original
544 Les gens l'ont consulté

How to Select the Top 3 Rows from Each Category in MySQL Without Analytic Functions?

Sélection des 3 premières lignes de plusieurs catégories dans MySQL

La sélection des premières lignes de chaque catégorie dans un tableau peut être difficile. Une méthode utilisant des vues et des sous-requêtes, comme indiqué lors de la tentative initiale, peut renvoyer des résultats incorrects.

Une approche plus efficace utilise des fonctions analytiques, que MySQL ne prend pas en charge de manière native. Cependant, il est possible d'émuler ces fonctions à l'aide de variables. Voici comment :

<code class="sql">SELECT x.*
FROM (
  SELECT t.*,
         CASE
           WHEN @category != t.category THEN @rownum := 1
           ELSE @rownum := @rownum + 1
         END AS rank,
         @category := t.category AS var_category
  FROM TBL_ARTIKUJT t
  JOIN (SELECT @rownum := NULL, @category := '') r
  ORDER BY t.category
) x
WHERE x.rank <= 3;</code>
Copier après la connexion

Cette requête initialise les variables @rownum et @category à l'aide d'une opération JOIN. Elle attribue ensuite un rang à chaque ligne en fonction de sa catégorie, en incrémentant le classement si la catégorie change.

Enfin, la requête sélectionne uniquement les lignes avec un rang de 3 ou moins. Notez que vous devrez peut-être modifier la clause SELECT x.* pour inclure uniquement les colonnes souhaitées.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!