Sql postgres:在多个表中跨行查询?

Sql postgres:在多个表中跨行查询?,sql,postgresql,Sql,Postgresql,有没有一种方法可以跨多个表的连接行应用单个查询?我有几个存储度量数据的表,其中数据最初以10秒的间隔收集,但在另一个表中定期汇总为1分钟的间隔,最后在第三个表中汇总为10分钟的间隔 也就是说,我希望能够做到以下几点: SELECT value FROM table1 + table2 + table3 WHERE age(current_timestamp, time) > '2 days' AND metrics_name = 'foo'; SELECT value fro

有没有一种方法可以跨多个表的连接行应用单个查询?我有几个存储度量数据的表,其中数据最初以10秒的间隔收集,但在另一个表中定期汇总为1分钟的间隔,最后在第三个表中汇总为10分钟的间隔

也就是说,我希望能够做到以下几点:

SELECT value FROM table1 + table2 + table3
  WHERE age(current_timestamp, time) > '2 days'
    AND metrics_name = 'foo';
SELECT value from TABLE1 ...
  UNION SELECT value FROM table2 ...
  UNION SELECT value from TABLE3 ...
我不认为加入操作是正确的解决方案。看起来我可以使用UNION操作符得到我想要的结果,它看起来像:

SELECT value FROM table1 + table2 + table3
  WHERE age(current_timestamp, time) > '2 days'
    AND metrics_name = 'foo';
SELECT value from TABLE1 ...
  UNION SELECT value FROM table2 ...
  UNION SELECT value from TABLE3 ...

在哪里。。。是我的WHERE子句等的内容,但是如果单个SELECT查询很复杂并且没有通过don't repeat yourself的咒语,那么它很快就会变得混乱。是否有其他方法来破解此特定螺母?

在嵌套查询中使用带有UNION的嵌套查询。我强烈建议您使用UNION ALL,除非您希望消除重复项,在本例中您不会这样做,所以请使用UNION ALL


使用union可能是最好的选择。使用union all也可能是一种选择,但是您没有给我们提供太多的详细信息来处理什么样的其他详细信息会有所帮助?我试图避免在从多个表中选择连接的结果时重复多次查询。我希望上面的内容足以说明这个用例,但如果您认为这会有所帮助,我很乐意创建一个扩展示例。