有没有办法在多个表的连接行中应用单个查询?我有几个存储度量数据的表,其中数据最初以10秒的间隔收集,但在另一个表中定期汇总为1分钟,最后在第三个表中间隔为10分钟。
也就是说,我希望能够做到这样的事情:
SELECT value FROM table1 + table2 + table3
WHERE age(current_timestamp, time) > '2 days'
AND metrics_name = 'foo';
我不认为JOIN
操作是正确的解决方案。看起来我可以使用UNION
运算符获取我想要的结果,这看起来像:
SELECT value from TABLE1 ...
UNION SELECT value FROM table2 ...
UNION SELECT value from TABLE3 ...
其中...
是我的WHERE
子句(等)的内容,但如果单个SELECT
查询很复杂,那么这会很快变得混乱(并且“不重复”你自己“口头禅”。是否有不同的方法来破解这种特殊的坚果?
答案 0 :(得分:1)
在嵌套查询中使用嵌套查询UNION
。我强烈建议您使用UNION ALL
,除非您想要消除重复项,在这种情况下您不会这样做,所以请使用UNION ALL
。
SELECT
value
FROM (
SELECT value, age, metrics_name FROM Table1
UNION ALL SELECT value age, metrics_name FROM Table2
UNION ALL SELECT value age, metrics_name FROM Table3
) AS All_Metrics
WHERE
All_Metrics.age(current_timestamp, time) > '2 days'
AND All_Metrics.metrics_name = 'foo';