tsql'in'语句到表值函数

时间:2018-10-15 11:14:29

标签: tsql

我有一个简单的表值函数返回一个列表

ALTER FUNCTION [dbo].[fnGetProducersByWheelType] 
(       
    @wheeltype int  
)
RETURNS TABLE 
AS
RETURN 
(   
    SELECT ProducerId 
    FROM ProducersByWheelTypes 
    WHERE WheelType=@wheeltype  
)

我需要知道的是我是否可以像这样打电话:

select * 
from producers 
where producerid in ( fnGetProducersByWheelType(2))

不是

select * 
from producers 
where producerid in (
    select productId 
    from fnGetProducersByWheelType(2)
)

即更不用说单列productId'从中选择productId'

2 个答案:

答案 0 :(得分:3)

不。正如in的文档所示,您可能具有子查询或表达式列表。 TVF不是expression

答案 1 :(得分:3)

您可以改为使用INNER JOIN

select p.* 
from producers p
join fnGetProducersByWheelType(2) f 
    on p.producerid = f.producerid