SQL SERVER CROSS/OUTER APPLY 用法

apply有两种形式 cross apply和 outer apply;  CROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NULL。  

看一下例子:

select * from table1 join MyFunction(1) on 1=1

MyFunction 的参数是一个常量,可以返回一个表。

但有时候我们希望以 table1 的字段作为参数,传进函数去计算,像:

select * from table1 join MyFunction(id) on 1=1

这样是会出错的。这个时候我们就可以用 apply 来实现了。例如:

select * from table1 cross apply MyFunction(id) on 1=1

简单的说,apply 允许我们将前面结果集每一行的数据作为参数,传递到后面的表达式,后面的表达式可以是一个表值函数,或者select结果集。

posted @ 2018-03-08 16:26  小猫钓鱼吃鱼  阅读(209)  评论(0编辑  收藏  举报