在 MS Access 中合并排序的记录

Combine sorted records in MS Access

提问人:Jonathan 提问时间:11/2/2023 最后编辑:Jonathan 更新时间:11/2/2023 访问量:75

问:

我在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 时会导致错误。

SQL Excel MS-Access 联接 合并

评论

0赞 June7 11/2/2023
你是说每个表中有 3 个字段,A1、A2、A3 是数据吗?以格式化的表结构显示数据。这是用于该 tablesgenerator.com/markdown_tables 的工具。可以使用VBA添加可用于联接记录的行号。表的记录数相同?或使用Excel生成行号。为什么选择了 Excel 标签?
0赞 tinazmu 11/2/2023
您提到的排序顺序是什么?只是行的显示方式?不能保证它们将按该顺序存储/检索。您必须有一些逻辑来对它们进行排序:按字母顺序按 Col1 或 Col1,Col2,Col3,或者添加新的数字列并手动分配数字。或者将它们带到电子表格中并在其中分配数字,然后复制到 Access 中。
0赞 Jonathan 11/2/2023
请参阅上面更新的详细信息。
0赞 Andre 11/2/2023
我认为,你需要一个ROW_NUMBER来加入其中。请参阅 stackoverflow.com/questions/39174944/...stackoverflow.com/questions/18753368/...

答:

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
只使用两个记录集来读取源表,一个记录集来写入目标表呢?