"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar os 5 principais itens de cada categoria no MySQL evitando o erro “Subconsulta retorna mais de 1 linha”?

Como recuperar os 5 principais itens de cada categoria no MySQL evitando o erro “Subconsulta retorna mais de 1 linha”?

Publicado em 2024-11-20
Navegar:470

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

Recuperando os 5 principais itens de cada categoria no MySQL

Encontrando o erro "Subconsulta retorna mais de 1 linha" ao tentar buscar o cinco principais itens de menu para cada categoria de menu? A solução reside no emprego de variáveis ​​de efeito colateral.

Vamos detalhar a abordagem revisada:

Na subconsulta, introduzimos as variáveis ​​de efeito colateral @r e @g usando a notação @ do SQL. Essas variáveis ​​são usadas para rastrear membros do grupo e aumentar a classificação dentro de cada grupo.

  1. @g:=null - Inicializa @g como NULL, indicando que estamos iniciando um novo grupo.
  2. @r:=0 - Inicializa @r com 0, significando o início de uma nova classificação.
  3. A cláusula WHERE na subconsulta (onde m.menuid = s.menuid) garante que s e m sejam alinhado com base no ID do menu.
  4. @r:=case quando @g=m.profilename then @r 1 else 1 end - Esta expressão de caso incrementa @r em 1 se m.profilename for igual ao atual grupo (@g). Caso contrário, ele redefine @r para 1, sinalizando o início de um novo grupo.
  5. @g:=m.profilename - Atualiza @g com o nome do perfil do grupo atual, permitindo-nos rastrear as linhas subsequentes pertencentes a este group.
  6. A consulta principal recupera o nome do perfil e o nome do alias da tabela de subconsulta X.
  7. A condição final WHERE r

Ao implementar essa abordagem, você pode obter com eficiência os resultados desejados sem o erro "A subconsulta retorna mais de 1 linha".

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3