问题描述
进行左联接后,我剩下许多空(空)值。在同一个查询的某些列中,如何将这些空值替换为0?
select
m1.*,t2.Apple,t3.Berry,t4.Cherry
from
table1 as t1
left join table2 as t2 on t1.id = t2.id
left join table3 as t3 on t1.id = t3.id
left join table3 as t4 on t1.id = t4.id
;
示例输出
ID Apple Berry Cheery
1 1 NULL 1
2 1 NULL NULL
3 NULL 1 NULL
4 NULL NULL NULL
解决方法
您可以使用coalesce()
将null
的值替换为0
:
select
t1.*,coalesce(t2.Apple,0) as apple,coalesce(t3.Berry,0) as berry,coalesce(t4.Cherry,0) as cherry
from
table1 as t1
left join table2 as t2 on t1.id = t2.id
left join table3 as t3 on t1.id = t3.id
left join table4 as t4 on t1.id = t4.id
;
请注意,这假设所有3个水果列都是数字数据类型。
侧面说明:我在原始查询中修复了表别名的一些错字。