解決済み: 最初の 10 行を選択

Oracle SQL を使用すると、リレーショナル データベース内のデータを操作および管理できます。 一般的なタスクには、データのクエリ、テーブルの作成、複雑なデータ処理ルーチンの開発が含まれます。 開発者が SQL を使用して実行する頻繁なタスクの 10 つは、データベース テーブルから特定の行を選択することです。 場合によっては、パフォーマンス上の理由から、選択する行数を制限する必要がある場合があります。 デフォルトでは、Oracle SQL で「SELECT」ステートメントを作成すると、指定されたテーブルから条件を満たすすべての行が取得されます。 しかし、最初の 10 行だけが必要な場合はどうなるでしょうか? このガイドでは、Oracle SQL で最初の XNUMX 行のみを選択する方法を説明します。

SELECT *
FROM (選択 *
your_table から
some_column で注文)
WHERE ROWNUM <= 10; [/コード]

oracle sql という特別な疑似列を使用します。 「ロウナム」 開発者がこのような操作を実行できるようにします。 この疑似列は、取得時に各行の番号を示します。1 から始まり、クエリ内に存在する行数までの番号が返されます。

詳しいコードの説明

このクエリの意味を詳しく見てみましょう。

[コード lang=”Oracle SQL”]
SELECT * FROM (SELECT * FROM your_table ORDER BY some_column)

クエリの最初の部分では、テーブルからすべての列を選択し、「some_column」で並べ替えます。 ROWNUM が order by 句の後の行に割り当てられているため、ソートしています。 そしてフィルタリングの前に 行われます。

WHERE ROWNUM <= 10; [/code] クエリの 10 番目の部分では、「ROWNUM」疑似列が機能します。 これは基本的に、ROWNUM が 10 以下の行、つまり最初の 1 行のみを提供するように Oracle に指示します。 ここでの重要な注意点の XNUMX つは、ROWNUM 値は取得された行に XNUMX から割り当てられ、その値は "ORDER BY" 句が完全に処理されるまでコミットされないことです。

ROWNUM とパフォーマンス

使い方 ロウナム 特に大量のデータを扱う場合、パフォーマンスが大幅に向上します。 Oracle は、結果を返し始める前に、ディスクからすべてのデータをフェッチしてメモリに保持する必要はありません。 SQL コマンドのすべての条件を満たす最初の 10 個を取得するとすぐに結果を返すことができます。

同様の機能

Oracle SQL の ROWNUM に似た関数は次のとおりです。 最初の n 行のみをフェッチ。 ただし、この句は Oracle 12c 以降のバージョンでのみ使用できます。

[コード lang=”Oracle SQL”]
SELECT *
your_table から
some_column で注文
最初の 10 行のみをフェッチします。

全体として、Oracle SQL は、SELECT 問合せによって返される行数を制限するためのいくつかの便利な手法をプログラマに提供します。

関連記事:

コメント