在access中进行表连接操作,既可以通过查询设计视图,也可以借助sql语句来实现。常见的连接类型有内连接(inner join)、左连接(left join)、右连接(right join)以及交叉连接(cross join)。本文以persons表和orders表为实例,详细说明各类连接方式的实际应用方法,两表的字段结构与具体数据参见下方附图。
1、 SQL JOIN 的核心作用是依据两个或多个表之间的关联字段,从多张表中联合提取所需数据。在标准SQL中,JOIN 与 inner join 是等价的,其执行结果完全一致,均只返回两张表中满足关联条件的匹配记录。
2、 比如,若需获取每位用户及其对应的订单信息,即可利用SQL中的JOIN完成跨表数据整合查询。
3、 可通过在FROM子句中用逗号分隔两张表,并在WHERE子句中明确指定连接条件的方式实现关联。
4、 查看Orders表数据可知,Id_p值为2的用户尚未产生任何订单,因此该用户的信息在最终查询结果中不会出现。


5、 在SQL语法中,inner join 和 join 表达的是同一逻辑,均可用于构建标准的内连接关系。
6、 使用 inner join 关键字显式连接两张表,并通过 ON 子句明确定义它们之间的匹配规则。
7、 对比结果可见,采用 inner join 与仅使用 join 所得到的输出结果完全相同。


8、 Left Join 与 left outer join 在语义上完全等同,均代表左外连接。该操作会完整保留左表的所有记录,即使右表中没有匹配项,也会将左表数据照常输出,缺失字段则以NULL填充。
9、 如图所示:虽然Persons表中Id_p = 2 的用户在Orders表中无对应订单,但该用户记录仍保留在查询结果中,而orderno字段显示为空(NULL)。


10、 Right Join 和 Right Outer Join 属于同一类连接操作,表示右外连接。它确保右表中的全部记录都会出现在结果集中,无论左表是否存在匹配行。
11、 由图可知:Orders表中id_o = 5 的订单记录,在Persons表中找不到匹配的用户信息,但仍被完整包含在查询结果中。


12、 Access数据库不支持 full join 和 cross join 这两种关键字。由于系统原生未提供对全连接和交叉连接的直接语法支持,若希望获得所有可能的记录组合(即笛卡尔积),可采用省略ON条件的JOIN写法——即仅使用JOIN但不加关联条件,从而强制生成两表的全组合结果集。
13、 根据Microsoft官方技术文档说明,交叉联接(Cross Join)的本质就是生成两个表的笛卡尔积。
14、 在Access中模拟交叉连接的标准SQL写法如下所示:












