如果条件为true,则执行query1,否则执行query2

db2dz4w8  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(266)
if(condition ,select t1.a,t1.b from t1 join t2 on t2.c=t1.a, select t1.a,t1.b from t1)

但在执行时,它显示了如何克服错误以及如何得到结果

6pp0gazn

6pp0gazn1#

首先提到完整的sql语句,if的文档

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF

你的选择声明在哪里??

k5ifujac

k5ifujac2#

if() 可以是sql语句中使用的函数。我不鼓励这种用法,因为标准构造是 case . if 也可以是控制流构造。但是,这只允许在编程块中使用(想想存储过程和触发器)。
有两种方法可以在单个查询中执行您想要的操作:

select t1.a, t1.b
from t1 join
     t2
     on t2.c = t1.a
where condition
union all
select t1.a, t1.b
from t1
where not (condition);

或:

select t1.a, t1.b
from t1
where (not condition) or
      exists (select 1 from t2 where t2.c = t1.a);

请注意,这两种方法都假设 condition 不计算为 NULL (尽管这很容易包含在逻辑中)。

相关问题