Maison  >  Article  >  base de données  >  Comment récupérer les 5 principaux éléments de chaque catégorie dans MySQL ?

Comment récupérer les 5 principaux éléments de chaque catégorie dans MySQL ?

DDD
DDDoriginal
2024-11-06 13:33:03285parcourir

How to Retrieve the Top 5 Items from Each Category in MySQL?

Récupération des 5 principaux éléments de chaque catégorie dans MySQL

Lorsque vous travaillez avec des bases de données, il devient souvent nécessaire de récupérer les données d'une manière spécifique . Cette question particulière consiste à extraire les 5 principaux éléments de chaque catégorie dans MySQL. Les tables en question sont "menus" et "menuitems", où "menus" contient des informations sur le menu et "menuitems" contient des détails sur des éléments de menu individuels.

La requête fournie :

SELECT m.profilename, name
FROM menus m 
WHERE (SELECT name
        from menuitems s
        where m.menuid = s.menuid
        limit 5)

Malheureusement, cette requête est incorrecte et générera l'erreur « La sous-requête renvoie plus d'une ligne ». Cette erreur se produit car la sous-requête renvoie plusieurs lignes pour chaque catégorie de menu, violant ainsi la condition selon laquelle un seul menu ne peut contenir que cinq éléments.

Pour résoudre ce problème, vous devrez utiliser des variables à effets secondaires.

Pour résoudre ce problème, vous devrez utiliser des variables à effet secondaire.

SELECT profilename, name
FROM
(
    SELECT m.profilename, s.name,
        @r:=case when @g=m.profilename then @r+1 else 1 end r,
        @g:=m.profilename
    FROM (select @g:=null,@r:=0) n
    cross join menus m 
    left join menuitems s on m.menuid = s.menuid
) X
WHERE r <= 5
La requête corrigée :

    Dans cette requête corrigée, nous introduisons des variables à effet secondaire :
  • @g :
  • garde une trace du nom du menu actuel
  • @r :
  • compte les éléments pour chaque menu
  • r <= 5 :
limite le résultat en haut 5 éléments par menu

En utilisant ces variables, la requête parcourra chaque menu et ses éléments associés, en incrémentant le nombre pour chaque menu. Cette technique garantit que vous récupérez uniquement les 5 meilleurs éléments pour chaque catégorie de menu.

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