我试图为每个匹配的ID检索前500条记录。我尝试了以下查询,但它检索了总共500条记录,而不是2500条记录。每个ID都有超过500条记录。
示例:
select id from table where id in (1,2,3,4,5) and rownum <= 500
答案 0 :(得分:2)
使用ROW_NUMBER分析函数为分区中的每条记录获取唯一的行号,然后限制外部查询中的行。
这是emp表的一个例子 -
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条记录。