Mysql根据条件阻止联合

时间:2012-10-08 13:46:02

标签: mysql sql select if-statement union

我想根据条件触发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, '');

所以如果第一个选择已经返回行,我可以保存第二个选择。事实是那些查询很重,并且有很多连接,所以我只想在必要时执行它们。

自从这项工作:

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

我有什么方法可以做到吗?

感谢。

ssedano

1 个答案:

答案 0 :(得分: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)