Apply有两种形式: cross apply 和 outer apply
再让我们了解一下apply运算涉及的两个步骤:
A1:把右表表达式(<right_table_expression>)应用到左表 (<left_table_expression>)输入的行;
A2:添加外部行;
使用apply就像是先计算左输入,让后为左输入中的每一行计算一次右输入。(这一句很重要,可能会不理解,但要先记住,后面会有详细的说明)
最后结合以上两个步骤说明cross apply和outer apply的区别:
cross apply和outer apply 总是包含步骤A1,只有outer apply包含步骤A2,如果cross apply左行应用右表表达式时返回空积,则不返回该行。而outer apply返回改行,并且改行的右表表达式的属性为null。