我有一个非常复杂的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
答案 0 :(得分: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