OUTER APPLY は SQL の強力な演算子で、あるテーブルの行を別のテーブルの行に関連付けることができます。 INNER JOIN に似ていますが、特定の状況で独自の機能を提供します。
OUTER APPLY の価値を証明する実際の例をいくつか示します:
グループごとに最初の N 行をクエリします:
例: 各ストアド プロシージャの最初の 2 つのパラメータを取得します。
<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>
テーブル値関数の呼び出し:
例: 外部クエリの各行に対してテーブル値関数を実行します。
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
列のエイリアスを再利用します:
例: 列の別名を再利用して複数の計算を実行します。
<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>
複数の列セットを反転します:
例: 非正規化構造を持つテーブルからデータを反転します。
<code class="language-sql">CREATE TABLE T ( Id INT PRIMARY KEY, Foo1 INT, Bar1 INT, Foo2 INT, Bar2 INT, Foo3 INT, Bar3 INT ); 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 で OUTER APPLY をいつどのように使用するか: 実際の例?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。