-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條記錄。