从不同的命名空间中将两个表作为一个查询

时间:2018-09-23 07:15:20

标签: sql postgresql

我在PostgreSQL数据库中有两个表,其中包含两个仅在名称空间上不同的表:Japan.RevenueKorea.Revenue。我只想查询一张表。

例如

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

我该怎么做?

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

2 个答案:

答案 0 :(得分:3)

您需要完全限定表名并合并结果。 对于内部查询,可以做的不仅仅是简单的选择,但是由于要进行聚合,因此需要在外部进行。 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 ....
;

编辑:现在使用下面注释中的UNION ALL。

答案 1 :(得分:2)

尝试一下:

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

当您具有相同类型的相同列时,最好的合并方式是并集 您也可以在select之外对其进行分组。