sql >> Database teknologi >  >> RDS >> Mysql

mysql vælg indre joinforbindelse med limit

Du kan bruge en rangforespørgsel mysql har ikke vinduesfunktioner til denne type resultater for at få n poster pr. gruppe, jeg vil ikke foreslå en group_concat løsning fordi som articles termer siger, at der kan være nok data og nemt ved at passere begrænsningen på 1024 tegn, hvis du øger denne grænse, er den også afhængig af max_allowed_packet også

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

Ovenfor vil rangere hver artikel indenfor i dens kategorigruppe, du kan se resultatet af rownum alias og i ydre forespørgsel filtrerer du blot resultaterne af artikler til 5 pr. kategorigruppe



  1. Hvordan sletter man ubrugte sekvenser?

  2. Brug af Robolectric med SQLiteAssetHelper

  3. Findes i markøren, hvor betingelsen er opfyldt

  4. Indsatte, slettede tabeller (magiske tabeller) i MySQL