-3
我试图为每个匹配的ids检索前500条记录。我尝试了下面的查询,但是它检索到总共500条记录,而不是2500条。每个id有超过500条记录。如何根据过滤条件从表中提取前N行sql oracle
例子:
select id from table where id in (1,2,3,4,5) and rownum <= 500
我试图为每个匹配的ids检索前500条记录。我尝试了下面的查询,但是它检索到总共500条记录,而不是2500条。每个id有超过500条记录。如何根据过滤条件从表中提取前N行sql oracle
例子:
select id from table where id in (1,2,3,4,5) and rownum <= 500
使用ROW_NUMBER解析函数来获得一个唯一的行号为分区中的每个记录,然后在外部查询限制行。
下面是从EMP表-1
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条记录。