【发布时间】:2014-08-06 04:09:12
【问题描述】:
我有 3 个访问表,其中包含过去 3 年的信息。每个都有大量相同的记录,但每个记录也有独特的记录。
2 个表具有相同的唯一主键 (ID),而第 3 个表具有不同的唯一 ID 集
如何将所有唯一 ID 组合并选择到一个主表中?谢谢
【问题讨论】:
-
我很确定 Access 支持 union 和 union all,不是吗?
标签: ms-access
我有 3 个访问表,其中包含过去 3 年的信息。每个都有大量相同的记录,但每个记录也有独特的记录。
2 个表具有相同的唯一主键 (ID),而第 3 个表具有不同的唯一 ID 集
如何将所有唯一 ID 组合并选择到一个主表中?谢谢
【问题讨论】:
标签: ms-access
不是 100% 确定我了解重叠发生的位置,但试试这个:
select ID
into All_Id
from (
select ID from Table1
union
select ID from Table2
union all
select ID from Table3
)
这假定 Table1 和 Table2 可能共享一些 ID,并且您只希望它们列出一次,但 Table3 没有任何重叠。
说实话,将它们全部设为union 并没有什么坏处,除了可能让查询运行得更慢。
【讨论】:
如果您需要唯一的 ID,请使用 UNION 查询。如果您想要所有内容,请使用 UNION ALL。
UNION = 没有欺骗
UNION ALL = 返回所有记录,包括重复记录
Access 引擎支持联合查询,但您必须在 SQL 视图中手动编写联合查询。设计视图不可用。
根据您过去三年的数据量,UNION 可能需要一些时间,甚至可能会崩溃几次。以防万一,我先做个备份。
如果您想要纯粹的唯一 ID 和新表,我会这样做:
1.) 编写您的联合查询。
SELECT ID FROM Table1
UNION
SELECT ID FROM Table2
...
2.) 保存查询。
3.) 创建一个生成表查询(选择所有唯一 ID 并将其组合到一个可能的新主表中)。
4.) 运行生成表查询。将创建新表。
希望对您有所帮助。让我们知道你是怎么做到的!
【讨论】: