Selecionando as principais linhas por categoria no MySQL
Para recuperar um número limitado de linhas de cada categoria em uma tabela, você pode utilizar funções analíticas . Entretanto, o MySQL não oferece essas funções diretamente. No entanto, é possível emulá-los usando variáveis.
Emulando funções analíticas
A consulta MySQL a seguir emula a funcionalidade de funções analíticas para selecionar as 3 primeiras linhas de cada categoria :
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 Explicação
- A subconsulta seleciona todas as linhas da tabela TBL_ARTIKUJT e inicializa duas variáveis de sessão, @rownum e @category, para rastrear a classificação e categoria atuais.
- a classificação atribuída a cada linha indica sua posição dentro de sua categoria. Quando uma nova categoria é encontrada, a classificação é redefinida para 1.
- var_category é usada para armazenar a categoria para cada linha.
- A instrução SELECT externa filtra a subconsulta, selecionando apenas linhas com uma classificação menor ou igual a 3.
Este método permite que você implemente a funcionalidade desejada sem depender de funções analíticas, que não são suportadas pelo MySQL.
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