1

私はSQL文を持っていますSELECT * FROM table1 WHERE ....; SELECT * FROM table2 WHERE ....

私が望むのは、結果が返された場合は最初の select ステートメントから結果を取得することですが、そうでない場合は無視して 2 番目の select ステートメントから結果を取得したいと考えています。SQLを使用してこれを行う方法はありますか?

上記の SQL ステートメントからデータテーブルを埋めるために dataadapter を使用して、これをデータテーブルとして返してもらっています。その部分を変更したり、データセットの入力に切り替えたりすることはできません (理由については説明しませんが、変更することはできません)。

4

2 に答える 2

3

両方のクエリが同じ数と型の列を返すと仮定すると、これを行う 1 つの方法は次のようになります。

select * from table1 where ... /* query 1 conditions */
union all
select * from table2 where ... /* query 2 conditions */
and not exists
(select 1 from table1 where ... /* query 1 conditions */)
于 2013-04-02T18:29:24.827 に答える
0

いくつかのオプション。最初にカウントを確認できます。

If (select count(*) from table1 where...) > 0
begin
    select * from table1 where...
end
else
begin
    select * from table2 where...
end;

両方の結果セットの構造が同一である場合は、一時テーブルを使用してカウント チェックを保存できます (したがって、パフォーマンスが向上します)。

create table #temp (col1 int, col2 varchar(10), ...);

insert #temp
select * from table1 where...;

if @@rowcount = 0 
begin
    insert #temp
    select * from table2 where...
end;

select * from #temp;
于 2013-04-02T18:34:46.540 に答える