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