我有这个问题:
SELECT * from #b as t
LEFT outer JOIN WR_16h_vs_MVA_16h_csv as csv
on t.PROBE_ID = csv.PROBE_ID;
返回如下所示的结果:
|id|...|...|...|functionCC_A|...|functionCC_B|...|
------------------------------------------
|1 | | | | lalala | | NULL | |
|2 | | | | asdad | | bababa | |
|3 | | | | NULL | | NULL | |
|n | | | | werwer | | NULL | |
由于JOIN,有两个functionCC
列。我想要一个functionCC
列,但以下是案例:
functionCC_A
为NULL
,请使用functionCC_B
functionCC_A
有值,functionCC_B
也有值,请使用
functionCC_B
functionCC_A
有值但functionCC_B
为NULL
,请使用functionCC_A
NULL
同时离开NULL
如何制作我的查询,以便我可以有条件地替换第一个functionCC
(functionCC_A
)列值,具体取决于第二个functionCC
列中的值{{1} })?
答案 0 :(得分:3)
COALESCE()
函数返回列表中的第一个非空值,如:
SELECT COALESCE(csv.functionCC,t.functionCC) AS functionCC
from #b as t
LEFT outer JOIN WR_16h_vs_MVA_16h_csv as csv
on t.PROBE_ID = csv.PROBE_ID;
这符合列出的所有条件,因为如果填充了“b”,那么{b}如果没有列出任何列出的字段,则COALESCE()
将返回NULL
。
我不确定_A
和_B
是否用于说明目的,假设一个名为functionCC
的列来自每个表,因此可能需要调整上面的名称