sql >> Database >  >> RDS >> Mysql

mysql select inner join met limiet

U kunt een rangquery gebruiken. mysql heeft geen vensterfuncties voor dit type resultaten om n records per groep te krijgen, ik zal geen group_concat voorstellen oplossing omdat als articles termen zegt dat er voldoende gegevens kunnen zijn en gemakkelijk de limiet van 1024 tekens omzeilen als je deze limiet verhoogt, is het ook afhankelijk van max_allowed_packet ook

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

Hierboven rangschikt elk artikel in zijn categoriegroep, u kunt het resultaat van rownum zien alias en in de buitenste zoekopdracht filtert u gewoon de resultaten van artikelen tot 5 per categoriegroep



  1. Prestaties voor het doorzoeken van 100 miljoen records

  2. COMMENT ON verwijderen van alle objecten in PostgreSQL

  3. Hoe kopieer je een database met mysqldump en mysql in Python?

  4. [MySQL]:VERWIJDER rijen uit twee afhankelijke tabellen