Oracleの rownum
pseudocolumnは、結果セット制限に頻繁に使用され、注文と組み合わせると独自の課題を提示します。並べ替え後に適用されるmysqlの lime
句とは異なり、 rownum
はの前に句の前に順序で処理されます。 これは、単に
rownum を使用することを意味します。
mysqlの
lime機能に相当するものを達成するには、ネストされたクエリを使用します:
SELECT *
FROM (
SELECT *
FROM emp
ORDER BY sal DESC
)
WHERE ROWNUM rownum フィルターを適用し、上位5の最高給与が返品されるようにします。
結果の相殺と制限:
より洗練されたコントロールの場合、オフセットと制限の両方を指定するには、少し複雑なクエリが必要です。
select *
から (
a。*、rownum rnumを選択します
から (
select *-句ごとに注文したメインクエリ
some_tableから
some_columnで注文します
)a
ここで、rownum =:min_row_to_fetch;
SELECT *
FROM (
SELECT a.*, ROWNUM rnum
FROM (
SELECT * -- Your main query with ORDER BY clause
FROM some_table
ORDER BY some_column
) a
WHERE ROWNUM = :MIN_ROW_TO_FETCH;
and :min_row_to_fetch を希望の上限と下限に置き換えます。 これにより、注文後に特定の範囲内に行が取得されます。
Oracle 12c and Beyond:
fetch 句:
Oracle 12c(および後のバージョン)は、 fetch
句を使用して、よりエレガントなソリューションを提供します。
- 最初の10行を取得します
select *
いつかから
名前で注文します
最初の10行のみを取得します。
- 行20-30を取得します
select *
いつかから
名前で注文します
20行をオフセットしてください
fetch 句は、結果を制限およびオフセットするためのよりクリーンで読みやすい方法を提供し、Oracle 12c以降の優先方法になります。 古いバージョンの場合、ネストされたクエリアプローチが必要です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3