Utilisez le ROW_NUMBER()
fonction pour cela :
SELECT *
FROM (select *,ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY item_id) as RowRank
from items_in_groups
)sub
WHERE RowRank <=2
Démo :SQL Fiddle
Le ROW_NUMBER()
La fonction attribue un numéro à chaque ligne. PARTITION BY
est facultatif, mais utilisé pour recommencer la numérotation pour chaque valeur de ce groupe, c'est-à-dire :si vous PARTITION BY group_id
puis pour chaque group_id
unique value la numérotation recommencerait à 1. ORDER BY
bien sûr est utilisé pour définir comment le comptage doit se dérouler, et est requis dans le ROW_NUMBER()
fonction.