Gebruik de ROW_NUMBER()
functie hiervoor:
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
De ROW_NUMBER()
functie wijst een nummer toe aan elke rij. PARTITION BY
is optioneel, maar wordt gebruikt om de nummering opnieuw te beginnen voor elke waarde in die groep, dat wil zeggen:als u PARTITION BY group_id
vervolgens voor elke unieke group_id
waarde zou de nummering opnieuw beginnen bij 1. ORDER BY
wordt natuurlijk gebruikt om te definiëren hoe het tellen moet gaan, en is vereist in de ROW_NUMBER()
functie.