【问题标题】:About Tdengine ordering by columns关于 Tdengine 按列排序
【发布时间】:2021-11-14 10:43:52
【问题描述】:

我最近正在使用TDengine通过连接RESTful JDBC连接器在TDengine上执行sql慢查询记录。我需要按“成本时间”字段对结果进行排序,但是返回的结果显示错误,声称仅支持按标签或时间戳(主列)排序。我查看了 TDengine 的官方文档,但没有找到更多信息。是TDengine不支持按非主键字段排序的功能还是有不知道的不同于mysql-orderby的排序方法?

描述表格:

describe test.testtable
{. "status":"succ",
   "head":["Field","Type","Length","Note"],
   "column_meta":[["Field",8,64],["Type",8,20],["Length",4,4], ["Note",8,8]],
   "data":[["ts","TIMESTAMP",8,""],["col1","NCHAR",8,""]],"rows":2}

选择表格

select * from test.testtable order by col1
{
   "status" : "error",
   "code" : 512,
   "desc" : "invalid SQL: invalid operation: order by primary 
      timestamp, first tag or groupby column in groupby clause allowed"
}

【问题讨论】:

  • 请挖掘生成的SQL。请提供SHOW CREATE TABLE 和失败的SELECT
  • 感谢您的回复。我已经发布了更多有关问题的详细信息。

标签: mysql tdengine


【解决方案1】:

TDengine数据库中的order列只允许group by子句中的primary timestamp和tag,可以使用taos shell查找

taos> desc stb;
             Field              |         Type         |   Length    |   Note   |
=================================================================================
 ts                             | TIMESTAMP            |           8 |          |
 c0                             | INT                  |           4 |          |
 c1                             | NCHAR                |          70 |          |
 c2                             | INT                  |           4 |          |
 c3                             | INT                  |           4 |          |
 c4                             | FLOAT                |           4 |          |
 c5                             | INT                  |           4 |          |
 c6                             | INT                  |           4 |          |
 t0                             | NCHAR                |          20 | TAG      |
 t1                             | INT                  |           4 | TAG      |
Query OK, 10 row(s) in set (0.000174s)

taos> select * from stb order by c0 desc limit 10;

DB error: invalid operation: only primary timestamp, first tag/tbname in groupby clause allowed as order column (0.000916s)
taos> select * from stb order by t1 desc limit 10;

DB error: invalid operation: only tag in groupby clause allowed in order clause (0.000825s)

taos> select * from stb order by ts desc limit 3;
           ts            |     c0      |               c1               |     c2      |     c3      |          c4          |     c5      |     c6      |               t0               |     t1      |
=======================================================================================================================================================================================================
 2020-10-01 00:00:00.099 |  -219661821 | G8cMQWdJm8J9w1hFRYIQP8dk4xU... |    78772435 |  -410543182 |        -950962.43750 |  -557459241 |   116557188 | shanghai                       |          74 |
 2020-10-01 00:00:00.099 |  -457689130 | 8UHa3VDA7NZmsGh7EGClOYvlip6... |    82077056 |   446259055 |        2141141.00000 |   848015664 |   575700881 | beijing                        |          73 |
 2020-10-01 00:00:00.099 |    66595749 | EGafmHXYKdcHzzdRasxCKHJiEaX... |  -203469760 |    17904570 |        2102826.50000 |  -997489652 |  -148873667 | shanghai                       |          72 |
Query OK, 3 row(s) in set (0.059262s)

taos> select count(*) from stb group by t1 order by t1 desc slimit 5;
       count(*)        |     t1      |
======================================
                   100 |          99 |
                   100 |          98 |
                   100 |          97 |
                   100 |          96 |
                   100 |          95 |
Query OK, 5 row(s) in set (0.002158s)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 2016-11-10
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多