Brug ROW_NUMBER()
funktion til dette:
SELECT *
FROM (select *,ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY item_id) as RowRank
from items_in_groups
)sub
WHERE RowRank <=2
Demo:SQL Fiddle
ROW_NUMBER()
funktion tildeler et nummer til hver række. PARTITION BY
er valgfri, men bruges til at starte nummereringen forfra for hver værdi i den gruppe, dvs.:hvis du PARTITION BY group_id
derefter for hver unikke group_id
værdien ville nummereringen starte forfra ved 1. ORDER BY
bruges selvfølgelig til at definere, hvordan optællingen skal gå, og er påkrævet i ROW_NUMBER()
funktion.