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

如何将3个数据表的3列合并为无重复名称的独立结果表?附示例

嗨,我来帮你搞定这个多表列合并去重的需求!要把三个不同数据表的指定列合并成一个无重复值的独立结果表,核心思路就是合并所有值+自动去重,下面分不同场景给你具体方案:

解决方法:合并多表列并生成无重复结果表

通用SQL实现(适用于大多数数据库)

假设你的三个表分别叫table_a、table_b、table_c,要提取的列是col_a、col_b、col_c,我们可以用UNION关键字——它天生就会合并多个查询结果并自动剔除重复值,完美匹配你的要求。

1. 先预览去重后的结果

先跑这条SQL看看效果:

SELECT col_a AS 名称 FROM table_a
UNION
SELECT col_b AS 名称 FROM table_b
UNION
SELECT col_c AS 名称 FROM table_c;

划重点:一定要用UNION而不是UNION ALL!后者只会粗暴合并,不会去重,前者才会帮你去掉重复的名称。

2. 直接生成独立的结果表

如果要把结果存成新表,用CREATE TABLE ... AS语句就行(不同数据库细节略有差异,通用版如下):

CREATE TABLE 最终结果表 AS
SELECT col_a AS 名称 FROM table_a
UNION
SELECT col_b AS 名称 FROM table_b
UNION
SELECT col_c AS 名称 FROM table_c;

不同工具的专属调整

SQL Server 用户

可以用SELECT ... INTO的写法更顺手:

SELECT 名称 INTO 最终结果表
FROM (
    SELECT col_a AS 名称 FROM table_a
    UNION
    SELECT col_b AS 名称 FROM table_b
    UNION
    SELECT col_c AS 名称 FROM table_c
) AS temp_table;

Excel/Access 用户(非数据库场景)

如果是用办公软件处理,步骤更简单:

  • 把三个表的目标列数据,依次复制到同一个空白工作表的同一列里
  • 选中这列数据,点击「数据」选项卡→「删除重复值」
  • 在弹出的窗口里只勾选「名称」列,确认后就得到无重复的结果了

避坑小贴士

  • 如果三个列的数据类型不一样(比如一个是数字,一个是文本),记得用CAST/CONVERT统一类型,避免报错:
SELECT CAST(col_a AS VARCHAR(100)) AS 名称 FROM table_a
UNION
SELECT CAST(col_b AS VARCHAR(100)) AS 名称 FROM table_b
UNION
SELECT CAST(col_c AS VARCHAR(100)) AS 名称 FROM table_c;
  • 要是原表有空白值(NULL),UNION会自动把重复的空值合并成一个;如果想直接排除空值,就在每个SELECT后面加WHERE 列名 IS NOT NULL就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:23:39