sql >> Databasteknik >  >> RDS >> Mysql

mysql välj inre koppling med limit

Du kan använda en rangfråga mysql har inte fönsterfunktioner för den här typen av resultat för att få n poster per grupp, jag kommer inte att föreslå en group_concat lösning eftersom som articles termer säger att det kan finnas tillräckligt med data och enkelt passera begränsningen på 1024 tecken om du ökar denna gräns är det också beroende av max_allowed_packet också

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

Ovan kommer att ranka varje artikel inom i sin kategorigrupp du kan se resultatet av rownum alias och i yttre fråga filtrerar du bara resultaten av artiklar till 5 per kategorigrupp



  1. MySQL - Villkorliga utländska nyckelbegränsningar

  2. Säkerhetskopiera en SQLite-databas

  3. Dominoernas hemligheter, eller en dominospeldatamodell

  4. PostgreSQL multi INSERT...RETURNERAR med flera kolumner