繁体   English   中英

具有表值函数的INNER JOIN不起作用

[英]INNER JOIN with Table-Valued Function not working

我有一个表值函数返回一个表。 当我尝试用另一个表JOIN表值函数时,我没有得到任何结果,但是当我将函数的结果复制到一个实际的表中并进行相同的连接时,我得到了预期的结果。

查询看起来像这样:

Select *
From myTable
INNER JOIN fn_function(@parm1, @param2)
ON ....

总而言之,我有大约4个这样的查询,每个查询都有不同的功能,但所有功能都产生相同的表,但数据不同。 对于其中一些查询, INNER JOIN可以正常工作,但对于其他查询则不然。

有人建议为什么会这样吗?

使用表值函数,您通常使用Cross Apply

Select *
From myTable m
CROSS APPLY fn_function(m.field1, m.field2)

如果我们做出一些假设,表值函数的参数不依赖于myTable列,那么这将是有效的。

   SELECT *
    FROM myTable 
    INNER JOIN

    (SELECT * from fn_function(@para1, @para2 etc))
 ON ...

但是如果params依赖于myTable它就行不通

连接的“ON”子句很可能是不正确的。 也许是一个小错字

JOIN x ON oID = odID

代替

JOIN x ON oID = oID

我认为这应该有效

  Select * 
    From Animals 
    Join dbo.AnimalsTypesIds(900343) 
      As AnimalsTypes
      On AnimalsTypes.TypeId = Animals.TypeId

在表值函数中,返回表应该具有TypeId,以便join对该子句起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM