如何通过同名列关联两表并为无数据列填充Null/0?
解决方案
要实现保留所有Color值、关联两表并填充缺失Wheels数据的需求,**左连接(LEFT JOIN)**是正确的选择,之前用UNION报错是因为它的用途和你的需求完全不匹配,具体实现如下:
保留NULL的写法
SELECT t1.Color, t1.Doors, t2.Wheels FROM 表1 t1 LEFT JOIN 表2 t2 ON t1.Color = t2.Color;
把NULL转为0的写法
如果需要将无匹配的Wheels值显示为0,用COALESCE函数(主流数据库均支持):
SELECT t1.Color, t1.Doors, COALESCE(t2.Wheels, 0) AS Wheels FROM 表1 t1 LEFT JOIN 表2 t2 ON t1.Color = t2.Color;
为什么UNION不适用?
UNION的作用是合并两个结构一致的查询结果的行,而你的需求是横向关联两个表的列,用它自然会报错,完全不符合场景。
执行上述SQL后,会得到你期望的结果:
| Color | Doors | Wheels |
|---|---|---|
| Red | 1 | 1 |
| Blue | 2 | 2 |
| Green | 3 | NULL(或0) |
内容的提问来源于stack exchange,提问作者notarobotman
相关产品推荐
相关产品推荐

