如何创建类似Excel Index-Match的MS Access多列匹配查询?
MS Access多列关联匹配姓名的实现方法
针对你说的场景,核心思路是将Table2与Table1进行两次关联,分别对应PersonID-1和PersonID-2两个字段,这样就能取出对应的姓名列。
方法一:直接编写SQL查询
打开Access的查询设计视图,切换到SQL视图,输入以下语句:
SELECT Table2.ItemID, Table2.[PersonID-1], t1.PersonName AS [PersonName-1], Table2.[PersonID-2], t2.PersonName AS [PersonName-2] FROM (Table2 LEFT JOIN Table1 AS t1 ON Table2.[PersonID-1] = t1.PersonID) LEFT JOIN Table1 AS t2 ON Table2.[PersonID-2] = t2.PersonID;
- 用
LEFT JOIN是为了保证即使某条记录的PersonID-1或PersonID-2为空,也能保留这条记录(和Excel里Index-Match找不到值返回空的逻辑一致) - 给Table1起别名
t1和t2,是为了区分两次关联的同一个表
方法二:可视化查询设计(适合新手)
- 打开查询设计,添加Table2和Table1两次(Access会自动给第二次添加的Table1命名为
Table1_1) - 拖动Table2的
PersonID-1到第一个Table1的PersonID字段,建立关联 - 拖动Table2的
PersonID-2到第二个Table1(Table1_1)的PersonID字段,建立关联 - 在字段行依次选择:Table2的ItemID、Table2的PersonID-1、第一个Table1的PersonName(重命名为PersonName-1)、Table2的PersonID-2、第二个Table1的PersonName(重命名为PersonName-2)
- 运行查询即可得到结果
这个逻辑和Excel里用两次Index-Match分别匹配两个PersonID是一样的,只是在Access里用表关联来实现。
内容的提问来源于stack exchange,提问作者Gnad
相关产品推荐
相关产品推荐

