Tsql2008查询性能优化第一章---APPLY

   APPLY运算符涉及以下两个步骤中的一步或两步(取决于APPLY的类型):
          1.A1把右表表达式应用于左表的行。
          2.A2:添加外部行。
      Apply运算符把右表表达式应用左输入中的每一行。右表表达式可以引用左输入中的列,对于左表中的每一行,都要计算一次右边输入的表达式。这一步会把左边的每一行和来自右表达式的相应行进行匹配,并将生成的结果集合并起来,返回组合后的结果。
       Cross ApplyOUTER APPLY总是包含步骤A1,只有OUT APPLY才包含步骤A2。
       如果内部(右)表表达式为外部(左)行返回的是空集,则CROSS APPLY不会返回该外部(左)行。而OUTER APPLY会返回这样的行,对于内表表达式的属性,则使用NULL作为其占位符。
       例:以下查询返回类别为汽车的两个表中的数据:
SELECT  p.[d_id] ,
        p.[c_title] ,
        p.[e_title] ,
        p.[d_time] ,
        a.d_title
FROM    [DingTai].[dbo].[D_News_Product] AS p
        CROSS APPLY
        ( SELECT    c.d_id ,
                    d_title ,
                    c.d_time
          FROM      dbo.D_Category AS c
          WHERE     c.d_id = p.class_one
                      --ORDER BY  c.d_id DESC
         
        ) AS a
 
GO
------------------------返回结果---------------------
                  
 
 
*如果想返回不包含类为汽车的数据则用OUT APPLY:
 
SELECT  p.[d_id] ,
        p.[c_title] ,
        p.[e_title] ,
        p.[d_time] ,
        a.d_title
FROM    [DingTai].[dbo].[D_News_Product] AS p
        OUTER APPLY ( SELECT    c.d_id ,
                                d_title ,
                                c.d_time
                      FROM      dbo.D_Category AS c
                      WHERE     c.d_id = p.class_one
                      --ORDER BY  c.d_id DESC
                     
                    ) AS a
 
GO
-----------------------结果------------------------------------------------------
-----------补充单词知识------------------------------------------------------------
apply
英 [əˈplaɪ]
美 [əˈplaɪ]
vt.
申请; 涂; 应用,运用; 敷(药);
vi.
申请,请求,适用; 适用,适合; 专心致志;
[例句]I am continuing to apply for jobs
我正在继续找工作。

     Copyright © 2017 程英暾. All Rights Reserved.

转载于:https://www.cnblogs.com/c546170667/p/7594626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值