You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Teradata中合并两个含缺失值的表以得到指定结果

Teradata合并含缺失值的表实现方法

针对你给出的两个表,要实现按id合并并优先保留非空name的需求,有两种常用的Teradata实现方式:

方法一:FULL JOIN + COALESCE函数

通过全连接关联两个表的id字段,再用COALESCE函数依次取两个表中name的非空值(如果第一个表的name非空就用它,否则用第二个表的,都为空则返回NULL)。

假设两个表分别名为table_a和table_b,SQL语句如下:

SELECT 
    COALESCE(a.id, b.id) AS id,
    COALESCE(a.name, b.name) AS name
FROM table_a a
FULL JOIN table_b b
ON a.id = b.id;
  • FULL JOIN确保所有id都被保留,不管在哪个表中存在
  • COALESCE函数会返回参数列表中第一个非NULL的值,正好满足优先取非空name的需求

方法二:UNION ALL + GROUP BY聚合

先把两个表的所有行合并,再按id分组,用聚合函数(比如MAX)提取非空的name值(聚合函数会自动忽略NULL值)。

SQL语句如下:

SELECT 
    id,
    MAX(name) AS name
FROM (
    SELECT id, name FROM table_a
    UNION ALL
    SELECT id, name FROM table_b
) combined
GROUP BY id;
  • UNION ALL会保留两个表的所有行(包括重复的id行)
  • 外层按id分组后,MAX(name)会自动选取该id下所有非空的name值;如果所有name都是NULL,结果就是NULL

这两种方法都能得到你想要的合并结果,可根据实际表数据量和性能需求选择。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:54:53