ホームページ >データベース >mysql チュートリアル >サブクエリとフィルタリングを使用して上位 10 件の Oracle レコードを選択する方法

サブクエリとフィルタリングを使用して上位 10 件の Oracle レコードを選択する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 15:51:09642ブラウズ

How to Select the Top 10 Oracle Records Using a Subquery and Filtering?

サブクエリとフィルタリングを使用して 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。