我有一个内联表值函数,我想从select传递一个列,但会使用表别名。
例如:
select top 1000 a.*, b.* from item a
LEFT JOIN itemList b on a.item_id = b.item_id
where a.item_id in (SELECT * FROM dbo.fn_GIVFUC('1234567', a.item_id))
结果:'a'附近的语法不正确。
由于
答案 0 :(得分:5)
你必须像这样使用CROSS APPLY
select top 1000
a.*, b.*
from
item a
CROSS APPLY
dbo.fn_GIVFUC('1234567', a.item_id) c ON a.item_id = c.item_id
LEFT JOIN
itemList b on a.item_id = b.item_id
这意味着您可能会获得重复项,因此可能会工作。我无法测试
select top 1000
a.*, b.*
from
item a
LEFT JOIN
itemList b on a.item_id = b.item_id
WHERE
EXISTS (
SELECT *
FROM dbo.fn_GIVFUC('1234567', a.item_id)
-- may need this WHERE a.item_id = c.item_id
)