首頁 >資料庫 >mysql教程 >何時以及如何在 SQL 中使用 OUTER APPLY:真實範例?

何時以及如何在 SQL 中使用 OUTER APPLY:真實範例?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-10 08:33:42186瀏覽

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 行:

範例:擷取每個預存程序的前兩個參數。

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn