为啥 TDengine 数据库在相同的过滤条件下不能返回相同数量的行?

Posted

技术标签:

【中文标题】为啥 TDengine 数据库在相同的过滤条件下不能返回相同数量的行?【英文标题】:Why TDengine database couldn't return same amount of rows under same filter condition?为什么 TDengine 数据库在相同的过滤条件下不能返回相同数量的行? 【发布时间】:2021-12-25 21:59:33 【问题描述】:

我在相同的条件下使用这两个不同的 SQL,但没有返回相同数量的行。

 select tableid from meters where ts<now;
   tableid   |
==============
           1 |
           2 |
Query OK, 2 row(s) in set (0.003475s)

第二条命令:

taos> select * from meters where ts<now;
           ts            |   voltage   |   tableid   |
======================================================
 2021-11-11 11:24:54.333 |           0 |           2 |
 2021-11-11 11:24:57.417 |           1 |           2 |
 2021-11-11 11:25:22.108 |           9 |           2 |
 2021-11-11 11:25:29.048 |          12 |           2 |
 2021-11-11 11:26:13.160 |          22 |           2 |
 2021-11-11 11:26:39.245 |          30 |           2 |
 2021-11-11 11:26:51.911 |          22 |           2 |
 2021-11-11 11:26:51.999 |          40 |           2 |
 2021-11-12 15:43:21.245 |          90 |           2 |
 2021-11-13 14:43:21.245 |         100 |           2 |
 2021-11-11 11:24:20.928 |           0 |           1 |
 2021-11-11 11:24:22.576 |           1 |           1 |
 2021-11-11 11:24:24.250 |           2 |           1 |
 2021-11-11 11:25:00.123 |           6 |           1 |
 2021-11-11 11:25:35.188 |           9 |           1 |
 2021-11-11 11:25:39.548 |          11 |           1 |
 2021-11-11 11:26:51.999 |          60 |           1 |
 2021-11-12 15:43:21.245 |         100 |           1 |
 2021-11-13 15:43:21.245 |         100 |           1 |
Query OK, 19 row(s) in set (0.003994s)

这是一个错误吗?我使用的版本是TDengine database 2.2.1.3

【问题讨论】:

【参考方案1】:

TDengine 的标签不是数据列。当你只选择标签时,它会显示它有多少个标签,但不等于数据列的数量。

如果你想得到相同的数量,只需在标签前添加任何数据列即可。

例如:

select ts,tableid from xxxxx

【讨论】:

以上是关于为啥 TDengine 数据库在相同的过滤条件下不能返回相同数量的行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥简单的算术减法在“if”条件下不起作用?

为啥TDengine由于Invalid table ID无法插入数据

为啥TDengine比TimescaleDB消耗这么多存储空间?

当我使用“或”条件时,为啥我的查询使用过滤而不是索引条件?

为啥默认情况下不需要 mongoose 中的所有字段?

为啥过滤时使用相同的字段会导致不同的执行时间? (不同的索引用法)