首页 > 数据库 > 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 行:

示例:检索每个存储过程的前两个参数。

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板