Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir les n premiers/derniers enregistrements par groupe par

Solution de Carlos très simplifiée et corrigée (sa solution renverrait les 5 premières lignes, pas la dernière...) :

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

Dans MySQL, vous pouvez utiliser tB1.textB même s'il s'agit d'un groupe par requête, car vous regroupez par l'idB dans la première table, il n'y a donc qu'une seule valeur de tB1.textB pour chaque groupe...