Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql selecione junção interna com limite


Você pode usar uma consulta de classificação mysql não tem funções de janela para este tipo de resultados para obter n registros por grupo, não vou sugerir um group_concat solução porque como articles termos diz que pode haver dados suficientes e facilmente passar a restrição de limite de 1024 caracteres, se você aumentar esse limite, também terá uma dependência de max_allowed_packet também
SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
 FROM category c
 JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
 WHERE rownum <= 5

Acima irá classificar cada artigo dentro de seu grupo de categorias, você pode ver o resultado de rownum alias e na consulta externa basta filtrar os resultados dos artigos para 5 por grupo de categorias