"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 selecionar as três principais linhas de cada categoria no MySQL sem funções analíticas?

Como selecionar as três principais linhas de cada categoria no MySQL sem funções analíticas?

Publicado em 2024-11-03
Navegar:321

How to Select the Top 3 Rows from Each Category in MySQL Without Analytic Functions?

Selecionando as três principais linhas de várias categorias no MySQL

Selecionar as primeiras linhas de cada categoria em uma tabela pode ser um desafio. Um método que utiliza visualizações e subconsultas, conforme descrito na tentativa inicial, pode retornar resultados incorretos.

Uma abordagem mais eficaz emprega funções analíticas, que o MySQL não suporta nativamente. Porém, é possível emular essas funções usando variáveis. Veja como:

SELECT x.*
FROM (
  SELECT t.*,
         CASE
           WHEN @category != t.category THEN @rownum := 1
           ELSE @rownum := @rownum   1
         END AS rank,
         @category := t.category AS var_category
  FROM TBL_ARTIKUJT t
  JOIN (SELECT @rownum := NULL, @category := '') r
  ORDER BY t.category
) x
WHERE x.rank 

Esta consulta inicializa as variáveis ​​@rownum e @category usando uma operação JOIN. Em seguida, ele atribui uma classificação a cada linha com base em sua categoria, aumentando a classificação se a categoria mudar.

Finalmente, a consulta seleciona apenas as linhas com classificação 3 ou menos. Observe que pode ser necessário modificar a cláusula SELECT x.* para incluir apenas as colunas desejadas.

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