gpt4 book ai didi

postgresql - 在 PostgreSQL 中简化复杂的联合

转载 作者:行者123 更新时间:2023-11-29 14:07:59 28 4
gpt4 key购买 nike

我在 PostgreSQL 中有一个非常复杂的查询,它联合了几个表,所有表都有我们想要联合的公共(public)字段集。目前我们正在预生成此查询。我已经看到使用 UNPIVOT 解决这个问题,我想知道是否可以在 PostgreSQL 风格的 SQL 中做到这一点。

我有这样的东西

SELECT a,b,c FROM a UNION ALL
SELECT a,b,c FROM c UNION ALL
SELECT a,b,c FROM d UNION ALL
SELECT a,b,c FROM e UNION ALL
SELECT a,b,c FROM f

我希望将表的名称合并到单独的表中,并将其用于此查询。

附言。更改架构不是一种选择。

最佳答案

inheritance 的 Postgres 文档使用继承.您需要重新创建数据库,但如果您转储没有模式的表,创建一个具有继承性的新模式,然后将数据加载回来,这将很容易。

架构看起来像这样:

CREATE TABLE base (a, b, c);
CREATE TABLE a () INHERITS (base);
CREATE TABLE b () INHERITS (base);
....

通过这种设计,您可以进行简单的选择:

SELECT * FROM base;

这将返回 base 中的所有行以及从 base 继承的所有表。

阅读有关 PostgreSQL 表的信息 partitioning如果您还没有这样做,请从文档中获取。

关于postgresql - 在 PostgreSQL 中简化复杂的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com