如何用单条SQL语句获取TDengine中10000张子表的最新数据?
用单条SQL获取TDengine超级表下所有子表的最新数据
当然可以用单条SQL实现,利用TDengine的聚合函数和分组特性就能高效完成这个需求。
直接使用LAST()函数配合GROUP BY tbname,按子表分组后取每个子表的最新一条记录:
SELECT tbname, LAST(ts), LAST(temp), LAST(humidity) FROM sdata GROUP BY tbname;
- 把
ts替换成你表中实际的时间戳列名 temp、humidity替换成传感器对应的数值列,需要获取哪些字段就写哪些GROUP BY tbname会将超级表的数据按子表拆分,LAST()函数提取每个子表的最后(最新)一条记录
如果你的超级表给每个子表绑定了专属标签(比如device_id),也可以按标签分组,可读性更好:
SELECT device_id, LAST(ts), LAST(temp), LAST(humidity) FROM sdata GROUP BY device_id;
这种方式只需要一次请求就能拿到所有10000个测点的最新数据,比逐个查询子表的性能提升非常明显,完全适配服务初始化的场景。
内容的提问来源于stack exchange,提问作者JamesLiu
相关产品推荐
相关产品推荐

