SQL选择 - 作为一个返回

问题描述:

我有一个选择查询。我想用另一个选择替换那个select查询,如果它没有返回任何行。SQL选择 - 作为一个返回

例如可以说我有:

Select * from Temp2 
if (@@rowcount=0) 
select * from Temp1 

在C#最后,我找回它作为一个数据集。所以如果没有行被返回,它会做另一个选择。但是这个选择将在表格[1]而不是表格[0]中。

所以基本上,我想要做的是与最后的更换在SQL存储过程的第一选择的结果,如果@@ ROWCOUNT = 0 我相信这是可以做到。我想要一个整洁的解决方案。

我可以做这样的事情:

if ((select count(ID) from Temp2) =0) 
    select * from Temp1 
else 
    select * from Temp2 

,但我有3种选择。我想用max 2选择来做,因为我的select语句比给出的简单例子更复杂,我不喜欢重复同样的选择两次(例如,在Temp2上选择)。

感谢

select * from Temp2 
UNION ALL 
select * from Temp1 
where not exists (select * from Temp2) 
+1

+ 1场的欢呼声..工会都做到了......因为TEMP2不会有temp1中值,也没有最后的地步......非常感谢:) – waqasahmed 2009-07-07 09:12:43

+0

确定,但如果去掉其中,即使Temp2中有行,它也会始终返回Temp1的行;这与您在原始问题中的逻辑不同。 – 2009-07-07 09:13:34

也许表变量?

declare @result table({column defs}) 

insert @result 
select (..query 1...) 

if(@@rowcount = 0) 
    insert @result 
    select (..query 2...) 

select * from @result