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

如何在Access中创建查询合并站点浓度表与坐标表并保留全量数据

在Access中合并原始数据表与坐标表并保留全部数据的方案

嘿,这个需求太贴合数据库规范化设计的思路了——把重复的坐标信息抽成单独的表,既省空间又方便维护。下面给你两种实现方式,不管你习惯用图形界面还是写SQL都能搞定:

前提准备

首先得确认两个表的Location字段格式完全一致(比如都是文本类型,没有多余空格、大小写差异),这是关联的关键,不然会出现匹配不上的情况。

方式一:用图形化查询设计(适合可视化操作)

  • 打开你的Access数据库,点击顶部菜单栏的创建 > 查询设计
  • 在弹出的“显示表”窗口里,把「原始数据表」和「坐标表」都添加到查询设计界面,然后关闭窗口
  • 拖动「原始数据表」里的Location字段,到「坐标表」的Location字段上,松开鼠标后会出现一条关联线
  • 双击你需要在结果中显示的字段:比如原始数据表的「时间」「Location」「浓度」,坐标表的「Longitude」「Latitude」,这些字段会自动出现在下方的网格里
  • 重点来了!右键点击两个表之间的关联线,选择连接属性,在弹出的窗口里选第三个选项:包括“原始数据表”中的所有记录和“坐标表”中联接字段相等的那些记录——这就是左连接,能保证原始数据的所有记录都被保留,哪怕某个站点的坐标没在坐标表里找到,对应的经纬度会显示为Null,方便你后续排查
  • 点击顶部的运行按钮(那个感叹号图标),就能看到合并后的结果了,最后记得给查询起个名字保存起来

方式二:直接写SQL语句(适合快速操作)

如果你熟悉SQL,直接打开查询的SQL视图,粘贴下面的语句(记得把表名和字段名换成你实际的名称):

SELECT 原始数据表.时间, 原始数据表.Location, 原始数据表.浓度, 坐标表.Longitude, 坐标表.Latitude
FROM 原始数据表 LEFT JOIN 坐标表 ON 原始数据表.Location = 坐标表.Location;

这条语句的核心是LEFT JOIN,它会保留左边表(原始数据表)的所有记录,右边表(坐标表)中匹配到的记录就显示经纬度,没匹配到的话经纬度字段会是Null。

额外需求:保留两个表的全部数据(全外连接)

如果你还想保留坐标表中所有站点的信息(哪怕某个站点还没有采集到浓度数据),那需要用全外连接。Access的图形界面没有直接的全外连接选项,不过可以用UNION来实现,SQL语句如下:

SELECT 原始数据表.时间, 原始数据表.Location, 原始数据表.浓度, 坐标表.Longitude, 坐标表.Latitude
FROM 原始数据表 LEFT JOIN 坐标表 ON 原始数据表.Location = 坐标表.Location
UNION
SELECT 原始数据表.时间, 坐标表.Location, 原始数据表.浓度, 坐标表.Longitude, 坐标表.Latitude
FROM 坐标表 LEFT JOIN 原始数据表 ON 坐标表.Location = 原始数据表.Location;

这样不管原始数据有没有记录,坐标表的所有站点都会显示出来,没有数据的字段会显示为Null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:02:08