从多个表中的多个列中获取唯一值的完整列表

时间:2010-08-25 17:46:18

标签: sql ms-access union ms-access-2003

如果你需要它的背景故事:我有一个奇怪的情况。一个隶属于我自己的组织为我们提供了一个我们大量使用的数据库;其他一些组织也使用它,但我们的记录很容易超过总数的90%。我们有一个连接到实时数据库的数据输入的Web前端,但我们只将后端数据作为定期发送给我们的选定表的Access文件。

总的来说,这是一个麻烦,但我在每份报告中遇到的一个关键问题是将我们组织制作的记录与其他人的记录区分开来。记录由创建它们的工作人员识别,但我没有(并且不太可能得到)用户表本身 - 这意味着我必须手动保存哪些用户ID对应于哪些用户的列表,以及这些用户是否现在,我正在构建一种链接到数据提取的影子数据库,并且具有将这种信息附加到数据表的查询 - 所以当我提取记录列表时,我可以通过用户ID,名称,组织,角色等来获取它们

问题:并非所有用户都创建或修改所有类型的记录,因此我需要完成此列表的用户ID分散在多个表中。如何从所有这些表中创建唯一用户ID列表?我目前正在使用来自两个最大的表的ID的联合,但我不知道我是否可以在子查询上堆叠子查询以使其工作 - 而且我有点犹豫是否要在不知道的情况下为Access编写如果它最终会奏效。我也对其他方法感兴趣。

TL; DR:获取分散在多个表中的多列唯一值列的最简单方法是什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

将每个表的SELECT查询合并到一个UNION查询中。 UNION查询返回不同的值。

SELECT UserID FROM Table1
UNION
SELECT UserID FROM Table2
UNION
SELECT UserID FROM Table3;