sql连接函数

Ita*_*y.B 4 sql

我有一个函数,它接受2个参数并返回一个表.是否可以在选择中使用此功能并显示它返回的3列?这是我的查询:

select a.PersonId, b.Passportnumber, dbo.fn_Passport(a.PersonId)
from Person a
Run Code Online (Sandbox Code Playgroud)

谢谢

Ric*_*iwi 11

对于SQL Server 2005+,您可以使用APPLY运算符

select a.PersonId, b.Passportnumber, p.col1, p.col2, p.col3
from Person a
OUTER APPLY dbo.fn_Passport(a.PersonId) p
Run Code Online (Sandbox Code Playgroud)

我假设列名是col1,col2,col3用于说明.

当函数必须返回1行或更多行以保留Person记录时,可以使用CROSS APPLY.即使函数没有行,也使用OUTER APPLY来保留Person记录.基本上

CROSS APPLY similar to INNER JOIN
OUTER APPLY similar to OUTER JOIN
Run Code Online (Sandbox Code Playgroud)

如何使用APPLY