我有两个表格,说T1
和T2
和一列C
是共同的两个。我需要一个SQL查询,其中如果C
是null
在T1
它将从其他表中选择。选择是否sql
我试图在THEN
子句中写入SELECT
语句但未运行。不知道SQL中是否有任何IF ELSE
子句。
Select C, case when c = null Then Select c from T2
from T1
我有两个表格,说T1
和T2
和一列C
是共同的两个。我需要一个SQL查询,其中如果C
是null
在T1
它将从其他表中选择。选择是否sql
我试图在THEN
子句中写入SELECT
语句但未运行。不知道SQL中是否有任何IF ELSE
子句。
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]
谢谢..我正在考虑避免加入...但是..这是完美的工作。尽管我已经使用NVL。 – user1544460
你似乎需要的是一个工会
select c from t1
where c is not null
union
select c from t2
where c is not null
现在你会得到一个结果集,但只有当所有不为空列C
从T1
和T2
。
嘛,当然如果这简化了你的问题太多了,你需要使用的联接
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
是非常重要的你做了一个左连接,否则当T2
中的行也存在时,你只能得到T1
行。
联合结果是连续的,即结果集包含T1和T2的行吗?无论如何,我已经使用加入来解决问题。谢谢您的帮助。 – user1544460
这是在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
他们需要先加入,在那里他们可以加入一个领域? –