ホームページ > データベース > mysql チュートリアル > SQL で CROSS APPLY と OUTER APPLY を使用するのはどのような場合ですか?

SQL で CROSS APPLY と OUTER APPLY を使用するのはどのような場合ですか?

DDD
リリース: 2025-01-10 09:03:41
オリジナル
163 人が閲覧しました

When to Use CROSS APPLY vs. OUTER APPLY in SQL?

SQL での CROSS APPLY と OUTER APPLY の実践的な適用シナリオ

SQL の OUTER APPLY 演算子と CROSS APPLY 演算子は、柔軟なデータ操作と複雑なクエリの実行を提供します。各演算子をいつ使用するかを示す実際の使用例をいくつか示します。

クロス適用

  • グループ クエリの上位 N レコード: CROSS APPLY は、各グループの上位 N の結果を効率的に取得できます。例:
<code class="language-sql">SELECT pr.name,
       pa.name
FROM sys.procedures pr
OUTER APPLY (SELECT TOP 2 *
                    FROM sys.parameters pa
                    WHERE pa.object_id = pr.object_id
                    ORDER BY pr.name) pa
ORDER BY pr.name,
          pa.name </code>
ログイン後にコピー
  • 行ごとにテーブル値関数を呼び出す: CROSS APPLY は、外部クエリの各行を入力として、テーブル値関数を複数回呼び出すことができます。例:
<code class="language-sql">SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)</code>
ログイン後にコピー

外側適用

  • 列エイリアスの再利用: OUTER APPLY を使用すると、一時テーブルを作成せずに列エイリアスを再利用できます。例:
<code class="language-sql">SELECT number,
       doubled_number,
       doubled_number_plus_one
FROM master..spt_values
CROSS APPLY (SELECT 2 * CAST(number AS BIGINT)) CA1(doubled_number)  
CROSS APPLY (SELECT doubled_number + 1) CA2(doubled_number_plus_one)  </code>
ログイン後にコピー
  • 複数の列グループをアンパック: OUTER APPLY は、フラット テーブルから複数の列グループをアンパックできます。例:
<code class="language-sql">CREATE TABLE T
  (
     Id INT PRIMARY KEY,
     Foo1 INT, Bar1 INT,
     Foo2 INT, Bar2 INT,
     Foo3 INT, Bar3 INT
  );</code>
ログイン後にコピー

VALUES 構文を使用します (SQL Server 2008):

<code class="language-sql">SELECT Id,
       Foo,
       Bar,
       GrpName
FROM   T
       CROSS APPLY (VALUES('1', Foo1, Bar1),
                          ('2', Foo2, Bar2),
                          ('3', Foo3, Bar3)) V(GrpName, Foo, Bar); </code>
ログイン後にコピー

以上がSQL で CROSS APPLY と OUTER APPLY を使用するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート