Maison > base de données > tutoriel mysql > Comment récupérer les 5 principaux éléments de chaque catégorie dans MySQL tout en évitant l'erreur « La sous-requête renvoie plus d'une ligne » ?

Comment récupérer les 5 principaux éléments de chaque catégorie dans MySQL tout en évitant l'erreur « La sous-requête renvoie plus d'une ligne » ?

Linda Hamilton
Libérer: 2024-11-10 09:13:03
original
586 Les gens l'ont consulté

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

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

Rencontre avec l'erreur "La sous-requête renvoie plus d'une ligne" lors de la tentative de récupération du les cinq principaux éléments de menu pour chaque catégorie de menu ? La solution réside dans l'utilisation de variables à effets secondaires.

Décomposons l'approche révisée :

Dans la sous-requête, nous introduisons les variables à effets secondaires @r et @g en utilisant la notation @ de SQL. Ces variables sont utilisées pour suivre l'appartenance à un groupe et incrémenter le classement au sein de chaque groupe.

  1. @g:=null - Initialise @g à NULL, indiquant que nous démarrons un nouveau groupe.
  2. @r:=0 - Initialise @r à 0, signifiant le début d'un nouveau rang.
  3. La clause WHERE dans la sous-requête (où m.menuid = s.menuid) garantit que s et m sont aligné en fonction de l'ID du menu.
  4. @r:=case when @g=m.profilename then @r 1 else 1 end - Cette expression de cas incrémente @r de 1 si m.profilename est le même que l'actuel groupe (@g). Sinon, il réinitialise @r à 1, signalant le début d'un nouveau groupe.
  5. @g:=m.profilename - Met à jour @g avec le nom du profil du groupe actuel, nous permettant de suivre les lignes suivantes appartenant à ce groupe. group.
  6. La requête principale récupère le nom du profil et le nom de l'alias de table de sous-requête X.
  7. La condition finale WHERE r <= 5 filtre uniquement les 5 éléments les mieux classés au sein de chaque groupe.

En mettant en œuvre cette approche, vous pouvez obtenir efficacement les résultats souhaités sans l'erreur « La sous-requête renvoie plus d'une ligne ».

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