我在sql server中有一个表值函数,它返回多行和单列,如下面的
1
2
3
我使用语法select * from dbo.function
在我的查询的 where子句中使用此函数返回的值。
现在除了函数返回的值之外,我想将某些硬编码值放在 where子句中。
例如:
Select * from dbo.table where ID in (Select * from dbo.function + **I want to add some more values here**)
因此,如果函数返回
1
2
3
我想添加让我们说
4
5
在该列表中,使得最终查询变为如下:
select * from dbo.table where ID in (1,2,3,4,5)
答案 0 :(得分:2)
使用or
:
Select *
from dbo.table
where ID in (Select * from dbo.function) or
ID in (4, 5)
虽然你可以使用union all
来破坏子查询,但上面的查询更容易理解(在我看来)。此外,如果“function”实际上是一个表,优化器更容易识别适当的索引。