Select if else sql

  • 本文关键字:sql else if Select sql
  • 更新时间 :
  • 英文 :


我有两个表,比如T1T2,一列C对这两个表都是公共的。我需要一个SQL查询,如果CT1中的null,它将从其他表中选择。

我尝试在THEN子句中编写SELECT语句,但没有运行。不知道SQL中是否有IF ELSE子句。

Select C, case when c = null Then Select c from T2
from T1

更好的是,大多数RDBMS都支持COALESCE,它允许您检查多个值并返回第一个非null值。

SELECT COALESCE(T1.C, T2.C) AS C
FROM T1
LEFT OUTER JOIN T2 ON T1.[Primary Key] = T2.[Primary Key]

这在TransactSQL中吗?

我喜欢第一个答案,但你也可以这样做。。。

select case t1.C
    when null then t2.C
    else t1.C
    end as [testC]
from t1
inner join t2
on t1.PKID = t2.PKID

您似乎需要的是一个联合

select c from t1
where c is not null
union
select c from t2
where c is not null

现在,您可以在一个结果集中获得来自T1T2的所有列C,但前提是它们不为null。

当然,如果这过于简化了你的问题,你需要使用加入

    select coalesce(t1.c,t2.c) as c
      from t1
 left join t2 on (t2.id = t1.foreign_id)

这假设T2.ID是主键,并且与具有T1.FOREIGN_IDT1相关

执行左联接很重要,因为否则,当T2中也存在T1行时,只会得到该行。

最新更新