代码之家  ›  专栏  ›  技术社区  ›  stwissel

从不同的名称空间将两个表作为一个表进行查询

  •  1
  • stwissel  · 技术社区  · 6 年前

    我在PostgreSQL数据库中有两个表,其中包含两个仅在命名空间上不同的表: Japan.Revenue Korea.Revenue . 我想查询它们,因为只有一个表。

      SELECT productgroup, sum(transactionvalue)
      FROM  ???? (Something that combines the two tables) 
      Group by productgroup where ....
    

    我需要韩国和日本的结果加起来。到目前为止,我发送了2个查询,并将结果合并到应用程序中。一定有更好的办法

    2 回复  |  直到 6 年前
        1
  •  2
  •   Hitobat    6 年前

    您需要完全限定表名并合并结果。 可以对内部查询进行更多的选择,但是因为您要进行聚合,所以需要在外部进行。 https://www.postgresql.org/docs/current/static/queries-union.html

    SELECT productgroup, sum(transactionvalue)
    FROM (
        SELECT * FROM Japan.Revenue
        UNION ALL
        SELECT * FROM Kora.Revenue
    ) sub
    GROUP BY productgroup
    WHERE ....
    ;
    

    编辑:现在使用联合所有来自下面的评论。

        2
  •  2
  •   Ali Eshghi    6 年前

    试试这个:

     SELECT productgroup, sum(transactionvalue)
      FROM  korea  
      Group by productgroup
    union all
    SELECT productgroup, sum(transactionvalue)
      FROM  japon  
      Group by productgroup
    

    当您有相同类型的相同列时,最好的组合方式是并集 你也可以在select之外按它分组。