提问人:Jonathan 提问时间:11/2/2023 最后编辑:Jonathan 更新时间:11/2/2023 访问量:75
在 MS Access 中合并排序的记录
Combine sorted records in MS Access
问:
我在MS Access中有两个表,其中包含相同数量的记录,我想根据公共列的字母顺序(以下示例中的col3)“合并”在一起。col3 中的值不是唯一的,并且表中没有可用作复合键的列或列组合,因此内部联接返回多余的值。我想做的就是根据 col3 的排序顺序逐行匹配记录。例:
表1
col1 | col2 | col3 |
---|---|---|
答1 | 答2 | 答3 |
B1层 | B2层 | B3层 |
C1型 | C2型 | C3型 |
C1型 | C2型 | C3型 |
表2
col3 | col4 (英语) | col5 |
---|---|---|
答3 | E1型 | E2型 |
B3层 | F1 | F2系列 |
C3型 | G1系列 | G2系列 |
C3型 | G1系列 | G2系列 |
输出表
col1 | col2 | col3 | col4 (英语) | col5 |
---|---|---|---|---|
答1 | 答2 | 答3 | E1型 | E2型 |
B1层 | B2层 | B3层 | F1 | F2系列 |
C1型 | C2型 | C3型 | G1系列 | G2系列 |
C1型 | C2型 | C3型 | G1系列 | G2系列 |
我尝试使用自动编号向每个具有唯一值的表添加列,但遇到“超出文件共享锁定计数。增加 MaxLocksPerFile 注册表项“错误,并且我没有注册表编辑权限。
我还尝试将每个表导出到 excel,根据 col3 进行排序,然后重新导入组合表,但这很乏味,并且在重新导入 access 时会导致错误。
答:
1赞
Gustav
11/2/2023
#1
将“自动编号”字段添加到每个表(副本)。
这将被分配从 1 开始的值。
然后加入这两个字段:
Select
T1.Field1, T1.Field2, T1.Field3, T2.Field1, T2.Field2, T2.Field3
From
T1
Inner Join
T2 On T2.Id = T1.Id
附录:
由于每个定义的表没有排序,因此您必须:
- 为每个表创建并使用 Select 查询来指定顺序
- 除了查询字段之外,还创建两个新的空表,该表具有“自动编号”字段
- 使用此查询作为源为每个 SELECT 查询创建一个追加查询,以将记录追加到两个新表
- 修改上面的查询,以联接不联接源表,而是联接新表
评论
0赞
Jonathan
11/2/2023
我遇到“超出文件共享锁定计数。增加 MaxLocksPerFile 注册表项“错误,当我尝试执行此操作时,我没有注册表编辑权限。此外,当我将“自动编号”字段添加到每个表时,不能保证两个表的排序方式相同,因此在联接时排序不匹配。
0赞
Gustav
11/2/2023
好吧,这让事情变得有点复杂。请看扩展答案。
0赞
Shahram Alemzadeh
11/3/2023
只使用两个记录集来读取源表,一个记录集来写入目标表呢?
评论