Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich die ersten/letzten n Datensätze pro Gruppe von

Stark vereinfachte und korrigierte Carlos-Lösung (seine Lösung würde die ersten 5 Zeilen zurückgeben, nicht die letzte ...):

SELECT tB1.idA, tB1.idB, tB1.textB
FROM tableB as tB1
    JOIN tableB as tB2
        ON tB1.idA = tB2.idA AND tB1.idB <= tB2.idB
GROUP BY tB1.idA, tB1.idB
HAVING COUNT(*) <= 5

In MySQL können Sie tB1.textB verwenden auch wenn es sich um eine Gruppierung nach Abfrage handelt, da Sie nach der IDB in der ersten Tabelle gruppieren, sodass nur ein einziger Wert von tB1.textB vorhanden ist für jede Gruppe...