2009-07-07 3 views
2

У меня есть запрос select. Я хочу заменить этот запрос select другим, если он не возвращает строк.SQL Select - возвращает как один

Например позволяет сказать, что у меня есть:

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 selects, потому что мой оператор select более сложный, чем приведенный тривиальный пример, и мне не нравится повторять тот же выбор дважды (например, выберите Temp2).

Благодаря

ответ

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

+ 1 ура .. союз все это сделал ... так temp2 не будет иметь значения TEMP1, нет никакого смысла последнего, где ... Большое спасибо :) – waqasahmed

+0

хорошо, но если вы удалите где он всегда будет возвращать строки формы Temp1, даже если в Temp2 есть строки; которая отличается от логики, которую вы имели в своем первоначальном вопросе. –

+0

Я знаю .. мои операторы select имеют предложение where, чтобы отфильтровать результаты .. и он никогда не вернет результат, когда строка в одном select также существует как строка в другом select. – waqasahmed

2

Возможно таблица переменных?

declare @result table({column defs}) 

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

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

select * from @result 
+0

+1 спасибо. но это более сложное решение. Но мне, возможно, придется использовать в будущем более сложные хранимые процедуры, поэтому еще раз спасибо. – waqasahmed

Смежные вопросы