оператор tsql 'in' для табличной функции - PullRequest
0 голосов
/ 15 октября 2018

У меня есть простая таблично-значная функция, возвращающая таблицу из одного столбца

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))

not

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

т.е. не упоминать одиночный столбец productId 'выбрать productId из'

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы можете сделать INNER JOIN вместо:

select p.* 
from producers p
join fnGetProducersByWheelType(2) f 
    on p.producerid = f.producerid
0 голосов
/ 15 октября 2018

Нет.Как показывает документация для in, у вас может быть подзапрос или список выражений.TVF не является выражением .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...