INNER JOIN与表值函数不起作用

12 浏览
0 Comments

INNER JOIN与表值函数不起作用

我有一个返回表的表值函数。当我试图将表值函数与另一个表JOIN时,我没有得到任何结果,但是当我将函数的结果复制到一个实际的表格中并做相同的JOIN时,我得到了预期的结果。

查询看起来像这样:

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

总共我有大约4个这样的查询,每个查询都有略微不同的函数,但是所有函数都产生相同的表,但是数据不同。对于其中一些查询,INNER JOIN是有效的,但对于其他查询则不是。

有什么建议可以解决这个问题吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果我们做出一些假设,假设表值函数的参数不会动态依赖于myTable的列,那么它将起作用。

   SELECT *
    FROM myTable 
    INNER JOIN
    (SELECT * from fn_function(@para1, @para2 etc))
 ON ...

但是如果参数依赖于myTable,那么它将不起作用。

0
0 Comments

通过使用表值函数,通常使用Cross Apply。 \n

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

0