最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

SQL关于apply的两种形式crossapply和outerapply

来源:动视网 责编:小采 时间:2020-11-09 10:10:02
文档

SQL关于apply的两种形式crossapply和outerapply

SQL关于apply的两种形式crossapply和outerapply:SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: left_table_expression {cross|outer} apply right_table_expression 再让我们了解一下apply运算涉及
推荐度:
导读SQL关于apply的两种形式crossapply和outerapply:SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: left_table_expression {cross|outer} apply right_table_expression 再让我们了解一下apply运算涉及


SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: left_table_expression {cross|outer} apply right_table_expression 再让我们了解一下apply运算涉及的两个步骤: A1 :把右表表达式( right_

SQL 关于apply的两种形式cross apply 和 outer apply

apply有两种形式: cross apply 和 outer apply

先看看语法:

   {cross|outer} apply

再让我们了解一下apply运算涉及的两个步骤:

  • A1:把右表表达式()应用到左表()输入的行;
  • A2:添加外部行;
  •   使用apply就像是先计算左输入,让后为左输入中的每一行计算一次右输入。(这一句很重要,可能会不理解,但要先记住,后面会有详细的说明)

    最后结合以上两个步骤说明cross apply和outer apply的区别:

      cross apply和outer apply 总是包含步骤A1,只有outer apply包含步骤A2,如果cross apply左行应用右表表达式时返回空积,则不返回该行。而outer apply返回改行,并且改行的右表表达式的属性为null。

    看到上面的解释或步骤大家可能还是一头的雾水,不知所云。下面用例子来说明:

    , city -- 所在城市):

    .( (5) COLLATE Chinese_PRC_CI_AS NOT NULL, (10) COLLATE Chinese_PRC_CI_AS NOT NULL, ( ) )

    向表一插入数据:

    ,); ,); ,); ,);

    查询所插入的数据:

    dbo.Customers

    结果如图:

    再建表二([dbo].[Orders] 字段说明:orderid -- 订单id , customerid -- 消费者id):

    .( , (5) COLLATE Chinese_PRC_CI_AS NULL, ( ) )

    向表二插入数据:

    ); ); ); ); ); ); insert into dbo.Orders values(7,null);

    查询插入的数据:

    dbo.orders

    结果如图:

    例子:题目:得到每个消费者最新的两个订单:

    用cross apply

    sql:

    dbo.Customers as C cross apply (dbo.Orders as O where C.customerid=O.customerid order by orderid desc) as CA

    结果如图:

    过程分析:

      它是先得出左表【dbo.Customers】里的数据,然后把此数据一条一条的放入右表表式中,分别得出结果集,最后把结果集整合到一起就是最终的返回结果集了(T1的数据 像for循环一样 一条一条的进入到T2中 然后返回一个集合 最后把所有的集合整合到一块 就是最终的结果),网站空间,最后我们再理解一下上面让记着的话(使用apply就像是先计算左输入,让后为左输入中的每一行计算一次右输入)是不是有所明白了。

    实验:用outer apply 试试看看的到的结果:

    sql语句:

    dbo.Customers as C outer apply (dbo.Orders as O where C.customerid=O.customerid order by orderid desc) as CA

    结果如图:

    结果分析:

      发现outer apply得到的结果比cross多了一行,我们结合上面所写的区别(cross apply和outer apply 总是包含步骤A1,虚拟主机,只有outer apply包含步骤A2,如果cross apply左行应用右表表达式时返回空积,则不返回该行。而outer apply返回改行,并且改行的右表表达式的属性为null)就会知道了。

    ,香港虚拟主机

    文档

    SQL关于apply的两种形式crossapply和outerapply

    SQL关于apply的两种形式crossapply和outerapply:SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: left_table_expression {cross|outer} apply right_table_expression 再让我们了解一下apply运算涉及
    推荐度:
    标签: sql 形式 关于
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top