"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 » ?

Publié le 2024-11-20
Parcourir:636

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 de 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és 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 le groupe actuel (@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 de 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

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3