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

如何合并两个SQL表?保留表1数据并添加符合条件的表2数据

用UNION ALL+子查询实现需求

完全可以通过UNION ALL结合子查询的方式实现你的需求,核心思路是把两个符合要求的数据集合并:

  1. 第一部分:取表1的所有记录,col_4字段填充为NULL
  2. 第二部分:取表2中col_3存在于表1col_1中的记录,col_1和col_2字段填充为NULL

具体SQL代码

-- 第一部分:保留表1所有条目
SELECT col_1, col_2, NULL AS col_4
FROM table1

UNION ALL

-- 第二部分:添加表2中符合条件的条目
SELECT NULL AS col_1, NULL AS col_2, col_4
FROM table2
WHERE col_3 IN (SELECT DISTINCT col_1 FROM table1);

代码说明

  • 用UNION ALL而非UNION:因为两个数据集不会有重复记录,UNION ALL不需要做去重检查,性能更优
  • 子查询SELECT DISTINCT col_1 FROM table1:提前提取表1中所有唯一的col_1值,用于过滤表2的记录,确保只有符合条件的表2条目被加入结果
  • 字段对齐:两部分查询必须返回相同数量、对应类型的字段,所以通过NULL AS 字段名来补全缺失的列

结果验证

代入你给出的示例数据后,执行上述SQL会得到和你要求完全一致的结果表:

col_1col_2col_4
1aNULL
1bNULL
2cNULL
3dNULL
NULLNULLw
NULLNULLx
NULLNULLy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:45:49