说到 in 关键字,小伙伴们肯定再熟悉不过了,它可是关系型数据库查询语句中的常用关键字。例:
select * from user where user_name in ('张三','李四','王五');
如果在时序数据库中,也遇到了 in 的使用场景,这该怎么办?尝试过的小伙伴都知道,在时序数据库是无法使用 in 关键字的,虽然它还是保留字。那么,只能寻找其他替代方案了,现在就来说说其他的替代方案。1. 针对单个tag的多条件匹配,可以使用正则表达式;
示例:
select * from measurement_name where tagName =~/^张三|王五$/;
执行语句:
select * from mtest where companyId='001' and deviceId =~/^001|002$/;
注意事项:
-
正则表达式里不需要加引号;
-
该用法只支持tag,如果换成field不可以。
-
顺便温习一下正则表达式中各个符号的含义:
// 正则表达式主体被包含双斜杠中;
^ 匹配输入字符串开始的位置;
| 代表或,指明多项之间的一个选择;
$ 匹配输入字符串结束的位置。
有小伙伴说:我的查询语句可不只是一个字段的多个条件那么简单,我还需要按照时间降序排序,取每个tag的第一条记录,也就是最新记录。
难度升级了,这就是我们要说的第二个问题,分组 + 排序 + 最新的一条记录;还拿上面的数据为例,我们要查出companyId下的所有设备的最新采集数据。
2. 分组 &