Sử dụng ROW_NUMBER()
chức năng này:
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()
hàm gán một số cho mỗi hàng. PARTITION BY
là tùy chọn, nhưng được sử dụng để bắt đầu đánh số lại cho từng giá trị trong nhóm đó, tức là:nếu bạn PARTITION BY group_id
sau đó cho mỗi group_id
duy nhất giá trị đánh số sẽ bắt đầu lại ở 1. ORDER BY
tất nhiên được sử dụng để xác định cách đếm và được yêu cầu trong ROW_NUMBER()
chức năng.