if(condition ,select t1.a,t1.b from t1 join t2 on t2.c=t1.a, select t1.a,t1.b from t1)
但在执行时,它显示了如何克服错误以及如何得到结果
6pp0gazn1#
首先提到完整的sql语句,if的文档
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
你的选择声明在哪里??
k5ifujac2#
if() 可以是sql语句中使用的函数。我不鼓励这种用法,因为标准构造是 case . if 也可以是控制流构造。但是,这只允许在编程块中使用(想想存储过程和触发器)。有两种方法可以在单个查询中执行您想要的操作:
if()
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 (尽管这很容易包含在逻辑中)。
condition
NULL
2条答案
按热度按时间6pp0gazn1#
首先提到完整的sql语句,if的文档
你的选择声明在哪里??
k5ifujac2#
if()
可以是sql语句中使用的函数。我不鼓励这种用法,因为标准构造是case
.if
也可以是控制流构造。但是,这只允许在编程块中使用(想想存储过程和触发器)。有两种方法可以在单个查询中执行您想要的操作:
或:
请注意,这两种方法都假设
condition
不计算为NULL
(尽管这很容易包含在逻辑中)。