返回SQL查询中每组的前x个结果[英] Return first x results from each group in SQL query

本文是小编为大家收集整理的关于返回SQL查询中每组的前x个结果的处理方法,想解了返回SQL查询中每组的前x个结果的问题怎么解决?返回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 顺便说一句,我的 SQL 知识有限,所以如果可能的话,尽量做一些不太复杂的解释:D

推荐答案

应该这样做.

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

本文地址:https://www.itbaoku.cn/post/1764208.html