ホームページ >データベース >mysql チュートリアル >サブクエリとフィルタリングを使用して上位 10 件の Oracle レコードを選択する方法
サブクエリとフィルタリングを使用して Oracle の上位 10 レコードを選択します
Oracle データベースでは、サブクエリとフィルタリング手法を使用して、特定の列でソートされた上位 10 件のレコードを選択できます。一致するすべてのレコードを選択するために元々使用されていたクエリを変更して、この要件を含めることができます。
「ランダム」レコードを返す問題を解決するには、ROWNUM 句 (Oracle の LIMIT 句に相当します) を使用できます。
変更されたクエリ:
<code class="language-sql">SELECT * FROM ( SELECT DISTINCT APP_ID, NAME, STORAGE_GB, HISTORY_CREATED, TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE FROM HISTORY WHERE STORAGE_GB IS NOT NULL AND APP_ID NOT IN ( SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009' ) ORDER BY STORAGE_GB DESC ) WHERE ROWNUM <= 10;</code>
このクエリは、最初にサブクエリを使用して一致するレコードを取得します。次に、ROWNUM 句を適用して、並べ替え基準に基づいて結果のデータセットから上位 10 件のレコードを選択します。
パフォーマンスノート:
大規模なデータセットを処理するときにクエリのパフォーマンスが遅い場合は、サブクエリ述語に NOT IN ではなく NOT EXISTS を使用することを検討してください。サブクエリに多数のレコードが含まれている場合は、NOT EXISTS の方が効率的である可能性があります。
以上がサブクエリとフィルタリングを使用して上位 10 件の Oracle レコードを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。