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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:28:12