我有一个简单的表值函数返回一个列表
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'
答案 0 :(得分:3)
不。正如in
的文档所示,您可能具有子查询或表达式列表。 TVF不是expression。
答案 1 :(得分:3)
您可以改为使用INNER JOIN
:
select p.*
from producers p
join fnGetProducersByWheelType(2) f
on p.producerid = f.producerid