假设我有一个表格tab1,数据是:
col1 col2 col3
20 15 2016-04-04 00:00:00.000
25 25 2016-03-03 00:00:00.000
14 14 2016-03-03 22:22:22.223
54 34 2016-04-04 21:22:33.333
另一个表tab2是一个空表:
col1 col2 col3
我想要的是它应该始终从tab2收集值,如果tab2为空,它将移动到tab1并从那里收集值。
我知道当列为空时我可以使用COALESCE。但它返回空列。这就是我尝试过的(假设我有一个大数据集):
select coalesce(tab2.col2, tab1.col2) ab
from tab2, tab1
答案 0 :(得分:2)
这个问题:
select coalesce(tab2.col2, tab1.col2) ab
from tab2, tab1
不是合并的;它是加入。或者缺少连接,而不是。
您需要正确加入表格,如:
select coalesce(tab2.col2, tab1.col2) ab
from tab1 LEFT OUTER JOIN tab2 ON tab1.col1 = tab2.col1
我加入了Col1
,所以当您coalesce()
col2
时,它会在tab2
中为col1
值寻找非空值,如果它是NULL
,它会从col2
获取相同tab1
值的col1
值。