我有一个选择查询。如果不返回任何行,我想用另一个select替换那个select查询。
比如说我有:
Select * from Temp2
if (@@rowcount=0)
select * from Temp1
在c#end,我将其作为数据集检索。因此,如果没有返回任何行,它将执行另一个选择。但是这个选择将在表[1]中而不是表[0]。
基本上,我想要做的是将sql存储过程中的第一个选择结果替换为最后一个if @@ rowcount = 0的结果。 我相信这可以做到。我想要一个整洁的解决方案。
我可以这样做:
if ((select count(ID) from Temp2) =0)
select * from Temp1
else
select * from Temp2
但我有3个选择。我想用最多2个选项来做,因为我的select语句比给出的简单例子更复杂,我不喜欢重复相同的选择两次(例如在Temp2上选择)。
由于
答案 0 :(得分:9)
select * from Temp2
UNION ALL
select * from Temp1
where not exists (select * from Temp2)
答案 1 :(得分:2)
也许是表变量?
declare @result table({column defs})
insert @result
select (..query 1...)
if(@@rowcount = 0)
insert @result
select (..query 2...)
select * from @result