【问题标题】:Querying across multiple tables with identical schemas跨具有相同架构的多个表进行查询
【发布时间】:2015-07-23 15:47:53
【问题描述】:

我正在尝试对我的 Postgres 数据库中的多个表运行相同的查询,这些表都具有相同的架构。

这个问题:Select from multiple tables without a join? 表明这是可能的,但是他们正在对表集进行硬编码。

我有另一个查询返回我希望我的主查询在其上运​​行的五个特定表。如何通过 UNION 方法使用此结果?

简而言之,我希望我的查询在运行查询时将五个特定表(由另一个查询的结果确定)视为一个大表。

我了解,在许多与我的场景类似的情况下,您只是想合并表格。我不能做到这一点。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    一种可以满足您的限制的方法是使用table inheritance。简而言之,您需要创建一个具有相同架构的父表,并且对于您要查询的每个子表,您必须ALTER that_table INHERIT parent_table。对父表的任何查询都将查询所有子表。如果你需要在不同的情况下查询不同的表,我认为最好的方法是添加一个名为type或类似名称的列,并且只查询该表的某些值。

    【讨论】:

    • 我确实有一个父表具有相同的空模式,正如我正在考虑的那样。在您的 ALTER that_table INHERIT parent_table 代码中,您将如何插入确定哪个子的查询结果要运行的表?
    • 正如我上面提到的,我不会查询每个表的列表,但我会在每个被检查限制为单个值的表中添加一个type 列。然后我一次只查询某些类型,这将有效地查询某些表。我不建议查询 pg 内部表(pg_class 等)来获取表名,因为当您升级 postgres 版本时它们可能会发生变化。
    猜你喜欢
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多