在QuestDB中如何在WHERE子句中使用SELECT MIN(...)的查询结果?
这个SQL查询完全可行
你写的这段SQL是标量子查询的典型用法,完全符合SQL语法规范,所有主流关系型数据库(MySQL、PostgreSQL、SQL Server等)都支持。
原理说明
标量子查询的特点是只会返回单个值(一行一列),刚好可以和>=、<=这类比较运算符搭配,用来筛选some_table中ts字段落在other_table的ts极值范围内的数据。
优化建议
不过你的写法会对other_table进行两次扫描(一次查min,一次查max),如果other_table数据量较大,建议改成一次性获取极值的写法,减少表扫描次数:
select t.* from some_table t cross join (select min(ts) as min_ts, max(ts) as max_ts from other_table) o where t.ts >= o.min_ts and t.ts <= o.max_ts
内容的提问来源于stack exchange,提问作者Win32
相关产品推荐
相关产品推荐

