代码之家  ›  专栏  ›  技术社区  ›  Matt Parker

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

  •  1
  • Matt Parker  · 技术社区  · 16 年前

    如果你想要的话: 我有个奇怪的情况。我自己的一个附属组织为我们提供了大量使用的数据库;其他一些组织也使用它,但我们的记录很容易占总数的90%以上。我们有一个连接到实时数据库的用于数据输入的Web前端,但是我们只能将后端数据作为定期发送给我们的选定表的访问文件获取。

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

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

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

    提前感谢您的帮助!

    1 回复  |  直到 16 年前
        1
  •  4
  •   HansUp    16 年前

    将对每个表的选择查询组合为联合查询。联合查询返回不同的值。

    SELECT UserID FROM Table1
    UNION
    SELECT UserID FROM Table2
    UNION
    SELECT UserID FROM Table3;
    
    推荐文章