Snowflake中使用Union All时如何处理表间列不一致问题
解决UNION ALL列数不一致的问题
直接在缺少目标列的那张表的查询语句中,手动构造一个同名列,用NULL或者符合字段类型的默认值填充即可,完全不需要修改原表结构。
举个实际例子:
假设表table_a包含id、name、extra_col三列,而表table_b只有id、name两列,要让UNION ALL后的结果集包含extra_col列,且两边列数一致,SQL可以这么写:
SELECT id, name, extra_col FROM table_a UNION ALL SELECT id, name, NULL AS extra_col FROM table_b;
如果extra_col是特定数据类型,你也可以用对应类型的默认值代替NULL,比如字符串类型用'' AS extra_col,数字类型用0 AS extra_col,根据业务需求调整即可。
这样处理后,最终结果集会保留extra_col列,来自table_a的行显示该列的实际值,来自table_b的行显示你指定的填充值,同时满足UNION ALL对列数一致的要求。
内容的提问来源于stack exchange,提问作者Razan Aldossary
相关产品推荐
相关产品推荐

