2017-08-01 60 views
-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 

回答

2

使用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; 
  • 在上面的查詢,ROW_NUMBER函數將返回一個唯一的編號爲在特定部門 行的例子。
  • Where clause在外部查詢中會將結果集過濾爲每個部門最多3條記錄。
相關問題