我有两张桌子说T1
,T2
一列C
是两者共同的。我需要一个 SQL 查询,如果在其中C
,null
它将T1
从其他表中进行选择。
我尝试SELECT
在子句中写语句THEN
但没有运行。不知道IF ELSE
SQL中有没有子句。
Select C, case when c = null Then Select c from T2
from T1
我有两张桌子说T1
,T2
一列C
是两者共同的。我需要一个 SQL 查询,如果在其中C
,null
它将T1
从其他表中进行选择。
我尝试SELECT
在子句中写语句THEN
但没有运行。不知道IF ELSE
SQL中有没有子句。
Select C, case when c = null Then Select c from T2
from T1
更好的是,大多数 RDBMS 都支持COALESCE
,它允许您检查多个值并返回第一个非空值。
SELECT COALESCE(T1.C, T2.C) AS C
FROM T1
LEFT OUTER JOIN T2 ON T1.[Primary Key] = T2.[Primary Key]
你似乎需要的是一个工会
select c from t1
where c is not null
union
select c from t2
where c is not null
C
现在,您从一个结果集中获取所有列T1
,T2
但前提是不为空。
当然,如果这过于简化了您的问题,您需要使用 join
select coalesce(t1.c,t2.c) as c
from t1
left join t2 on (t2.id = t1.foreign_id)
这假设T2.ID
是主键并且T1
与T1.FOREIGN_ID
进行左连接很重要,否则只有T1
当行也存在于T2
.
这是在 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