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