ホームページ > データベース > mysql チュートリアル > SQL で OUTER APPLY をいつどのように使用するか: 実際の例?

SQL で OUTER APPLY をいつどのように使用するか: 実際の例?

Mary-Kate Olsen
リリース: 2025-01-10 08:33:42
オリジナル
142 人が閲覧しました

When and How to Use OUTER APPLY in SQL: Real-World Examples?

SQL での OUTER APPLY の実践的な応用例

OUTER APPLY は SQL の強力な演算子で、あるテーブルの行を別のテーブルの行に関連付けることができます。 INNER JOIN に似ていますが、特定の状況で独自の機能を提供します。

OUTER APPLY の使用例

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 サイトの他の関連記事を参照してください。

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