0

union条件に応じてトリガーしたい:

set @a := 0;

select @a := 1, b.name from B b
UNION
select 0, c.name from C c

次のように出力するには:

set @a := 0;

select @a := 1, b.name from B b
if(@a > 0, UNION select 0, c.name from C c, '');

したがって、最初の選択がすでに行を返している場合は、2 番目の選択を保存できます。これらのクエリは重く、結合が多いため、必要な場合にのみ実行したいと考えています。

この作品以来:

select b.name from B b where if(true, b.name = 'example', '')

それを行う方法はありますか?

ありがとう。

せだの

4

1 に答える 1

2

B からすべての行を選択したいとします。何もない場合は、C から行が必要です。これを行うには、おそらく条件付きロジックをいじることができます。SQL クエリでも実行できます。

select 1 as which, name
from B union all
select 0 as which, name
from C
where not exists (select 1 from B limit 1)
于 2012-10-08T13:50:39.237 に答える