【发布时间】: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
我正在尝试检索每个匹配 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
使用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;
Where clause 会将结果集过滤为每个部门最多 3 条记录。【讨论】: