2011-11-16 20 views
2

私の最初のSELECTブロックが実行された後、私は@@ROWCOUNTをチェックして0をチェックし、別のSELECTブロックを実行する必要があります。現在、私はそれをやっていますが、最初に2つのテーブル出力を取得すると、0または0の行があり、2番目のテーブルは必要なものです。事前にTSQL 2選択コマンド1つのテーブル出力を選択

if(@beta = 1) 

BEGIN 
SELECT * tblPages 
WHERE bitActive = 1 
END 

if(@@ROWCOUNT = 0) 
BEGIN 
SELECT * tblPages 
WHERE bitActive = 0 
END 

おかげで存在している場合、それは** 1 **行を見つけたとき、それは、クエリを停止する可能性があるため、私はSELECT * FROM ... `代わりcount``の( `使用することになり

答えて

3
if (select count(1) from tblPages where bitActive = 1) > 0 
begin 
    select * from tblPages where bitActive = 1 
end 
else 
begin 
    select * from tblPages where bitActive = 0 
end 
+0

**しかし、あなたのクエリは '> 0 'と比較すると、' exists'バージョンとまったく同じ実行プランを持っています。クエリオプティマイザはスマートです(SQL Server 2008)。実際にすべての行を数える必要はありません。 –

+0

ありがとう、解決済み –

+0

これを受け入れられた回答(私の投稿の左側にあるチェックマーク)としてマークしてください –

関連する問題