【问题标题】:How to fetch first N rows from table based on filter condition sql oracle [duplicate]如何根据过滤条件sql oracle从表中获取前N行[重复]
【发布时间】:2017-08-01 04:41:53
【问题描述】:

我正在尝试检索每个匹配 ID 的前 500 条记录。我尝试了以下查询,但它总共检索到 500 条记录。而不是 2500 条。每个 id 有超过 500 条记录。

例子:

select id from table where id in (1,2,3,4,5) and rownum <= 500

【问题讨论】:

    标签: sql oracle greatest-n-per-group


    【解决方案1】:

    使用ROW_NUMBER解析函数获取分区中每条记录的唯一行号,然后限制外部查询中的行数。

    这里是 emp Table 中的一个例子-

    SELECT *
      FROM (SELECT a.*,
                   ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY ename)
                      row_num
              FROM emp a)
     WHERE row_num <= 3;
    
    • 在上述查询中,row_number 函数将返回一个唯一编号 特定部门的行。
    • 外部查询中的Where clause 会将结果集过滤为每个部门最多 3 条记录。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2019-08-17
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多