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

Access 2010中如何合并数据表?新手求助SQL编写方法

Access合并数据表的SQL写法指南

嘿,刚接触Access的话,合并数据表其实分两种常见场景——要么是把两个结构相近的表的记录凑到一起(追加式合并),要么是根据共同字段把两个表的关联数据拼到一行(关联式合并),我给你把每种场景的SQL写法都讲明白:

场景1:合并结构相同的表(追加所有记录)

这种情况适合两个表的字段数量、数据类型都一致的场景,比如你有两个年度销售记录表,要把它们的记录合并成一个完整列表。

常用语句:UNION ALL(保留所有记录,效率更高)

如果不需要去重,优先用这个,它会把两个表的所有记录直接合并,不会做额外的去重校验:

SELECT 订单ID, 客户名称, 订单金额 FROM 销售表_2023
UNION ALL
SELECT 订单ID, 客户名称, 订单金额 FROM 销售表_2024;

去重合并:UNION

如果两个表存在重复记录(比如同一条订单被误录入到两个表),用UNION会自动去掉重复项,但因为要做去重校验,效率比UNION ALL低一些:

SELECT 订单ID, 客户名称, 订单金额 FROM 销售表_2023
UNION
SELECT 订单ID, 客户名称, 订单金额 FROM 销售表_2024;

⚠️ 注意:两个表的字段数量必须完全一致,对应位置的字段数据类型也要匹配,不然会直接报错。

场景2:关联两个表(按共同字段合并数据)

这种情况是把两个表的关联数据拼在同一行,比如你有员工表和部门表,要把每个员工对应的部门信息一起查出来。

内连接(只保留两边都匹配的记录)

只有当两个表的关联字段都有对应值时,这条记录才会出现在结果里——比如只显示有对应部门的员工:

SELECT 员工表.员工ID, 员工表.姓名, 部门表.部门名称
FROM 员工表
INNER JOIN 部门表 ON 员工表.部门ID = 部门表.部门ID;

左连接(保留左表所有记录,右表不匹配则显示空值)

不管右表有没有匹配的记录,左表的所有记录都会保留,右表没有匹配的字段会显示Null——比如显示所有员工,哪怕有些员工还没分配部门:

SELECT 员工表.员工ID, 员工表.姓名, 部门表.部门名称
FROM 员工表
LEFT JOIN 部门表 ON 员工表.部门ID = 部门表.部门ID;

右连接(保留右表所有记录,左表不匹配则显示空值)

和左连接逻辑相反,保留右表的所有记录,左表没有匹配的字段显示Null——比如显示所有部门,哪怕有些部门还没有员工:

SELECT 员工表.员工ID, 员工表.姓名, 部门表.部门名称
FROM 员工表
RIGHT JOIN 部门表 ON 员工表.部门ID = 部门表.部门ID;

额外技巧:把合并结果存为新表

如果想把合并后的结果永久保存成一个新表,可以用SELECT INTO语句,比如:

-- 合并两个销售表到新表
SELECT 订单ID, 客户名称, 订单金额 INTO 合并销售总表
FROM 销售表_2023
UNION ALL
SELECT 订单ID, 客户名称, 订单金额 FROM 销售表_2024;

-- 关联员工和部门表并存为新表
SELECT 员工表.员工ID, 员工表.姓名, 部门表.部门名称 INTO 员工部门关联表
FROM 员工表
INNER JOIN 部门表 ON 员工表.部门ID = 部门表.部门ID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:13:28