SQL Server 2019中如何按ID关联两表生成指定匹配结果?
正确的SQL查询语句
你需要保留两张表的所有行,按ID关联匹配,无对应数据的字段显示Null。之前的左连接仅保留Table_1的全部行,无法包含Table_2里独有的ID行,因此要使用全外连接(FULL OUTER JOIN),再配合COALESCE函数统一ID和Age的展示,避免重复或无效Null:
SELECT COALESCE(t1.ID, t2.ID) AS ID, COALESCE(t1.Age, t2.Age) AS Age, t1.Color, t2.Fruit FROM Table_1 t1 FULL OUTER JOIN Table_2 t2 ON t1.ID = t2.ID ORDER BY COALESCE(t1.ID, t2.ID);
关键说明:
FULL OUTER JOIN:返回两张表的所有行,ID匹配时合并为一行;某张表的ID在另一张表不存在时,对应字段自动填充Null。COALESCE:取第一个非Null的值,确保ID和Age始终显示有效数据(同一ID的Age如果两边一致,取任意一个都可;只有一边有值时就取存在的那个)。ORDER BY:可选,用来按ID排序结果,让输出更整齐。
如果同一ID在单张表中有多行记录,你可以在关联条件里加上AND t1.Age = t2.Age来更精准匹配,不过按你描述的"逐行匹配"需求,上面的语句已经够用。
内容的提问来源于stack exchange,提问作者Anh Hung Tran
相关产品推荐
相关产品推荐

