Sql 以表alias.column name作为参数调用内联UDF
我有一个内联表值函数,希望从select传递一列,但将使用表别名 例如:Sql 以表alias.column name作为参数调用内联UDF,sql,sql-server,sql-server-2005,user-defined-functions,Sql,Sql Server,Sql Server 2005,User Defined Functions,我有一个内联表值函数,希望从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”附近的语法不正确 谢谢您必须像这样使用交叉应用 select top 1000 a.*, b.
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”附近的语法不正确
谢谢您必须像这样使用交叉应用
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
)
你必须像这样使用交叉涂抹
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
)
感谢您的快速回复,但我仍然收到相同的错误:“a”附近的语法不正确。sql似乎不喜欢我将a.列名传递给函数。它是一个内联表函数,返回一个表,我希望得到多个结果,这就是为什么我的初始sql使用在这种情况下,检查DB兼容模式。SQL Server 2008+需要为90或更高才能允许此操作。它在80秒内无法工作。目前正在sql 2005 server上运行,因此该设置是否相同?不一定,不。您检查了吗?请参阅感谢您的快速回复,但我仍然收到相同的错误:“a”附近的语法不正确。sql似乎不喜欢我将a.列名传递给函数。它是一个内联表函数,返回一个表,我希望得到多个结果,这就是为什么我的初始sql使用在这种情况下,检查DB兼容模式。SQL Server 2008+需要为90或更高才能允许此操作。它在80秒内无法工作。目前正在sql 2005 server上运行,因此该设置是否相同?不一定,不。您检查了吗?看见