SQL Select - 返回为一个

时间:2009-07-07 09:06:00

标签: c# asp.net sql sql-server-2005

我有一个选择查询。如果不返回任何行,我想用另一个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上选择)。

由于

2 个答案:

答案 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