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)
答
也许表变量?
declare @result table({column defs})
insert @result
select (..query 1...)
if(@@rowcount = 0)
insert @result
select (..query 2...)
select * from @result
+ 1场的欢呼声..工会都做到了......因为TEMP2不会有temp1中值,也没有最后的地步......非常感谢:) – waqasahmed 2009-07-07 09:12:43
确定,但如果去掉其中,即使Temp2中有行,它也会始终返回Temp1的行;这与您在原始问题中的逻辑不同。 – 2009-07-07 09:13:34