-3
各一致IDの最初の500レコードを取得しようとしています。私は次のクエリを試みましたが、2500ではなく、合計500のレコードを取得します。各IDには500を超えるレコードがあります。フィルタ条件に基づいてテーブルから最初のN行を取得する方法oracle
例:
select id from table where id in (1,2,3,4,5) and rownum <= 500
各一致IDの最初の500レコードを取得しようとしています。私は次のクエリを試みましたが、2500ではなく、合計500のレコードを取得します。各IDには500を超えるレコードがあります。フィルタ条件に基づいてテーブルから最初のN行を取得する方法oracle
例:
select id from table where id in (1,2,3,4,5) and rownum <= 500
使用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つのレコードに結果セットがフィルタされます。