2011-06-17 87 views
1

我有如下返回幾百個結果打破一個非常複雜的SQL查詢:返回第一個x結果各組在SQL查詢

user 1 id: ##  stuff 
    user 1 id: ##  stuff 
    user 1 id: ##  stuff 
    .... 
    user 2 id: ###  stuff 
    user 2 id: ###  stuff 
    user 2 id: ###  stuff 
    .... 

約6用戶。它已經按照我想要的方式排序,我只想爲每個用戶設置前5個。是否有捷徑可尋?我使用PostgreSQL 8.4 btw,並且我的SQL知識有限,所以儘可能嘗試使任何解釋不要太複雜:D

回答

3

像這樣的東西應該這樣做。

SELECT t.user, t.id, t.stuff 
    FROM (SELECT user, id, stuff, 
       ROW_NUMBER() OVER (PARTITION BY user ORDER BY id) AS RowNum 
       FROM YourTable) t 
    WHERE t.RowNum <= 5