TDengine DML SELECT — 完整查询语法参考

发布时间:2026/9/28 6:12:19

TDengine DML SELECT — 完整查询语法参考
分类10.SQL 参考 |篇章02 DML SELECT适用版本TDengine v3.xv3.3.x / v3.4.x | 最后更新2026-07-15SELECT 是 TDengine 中最常用的语句。本文按子句顺序系统讲解 SELECT 完整语法、特殊子句PARTITION BY、INTERVAL、SLIDING、FILL、以及子查询/集合操作。核心概念速查表子句作用SELECT投影列FROM数据源WHERE行过滤PARTITION BY分区窗口INTERVAL/SESSION/STATE/EVENT/COUNTSLIDING滑动步长FILL填充空窗口GROUP BY分组HAVING分组过滤ORDER BY排序LIMIT/OFFSET限制详细解析1. 完整语法SELECT[DISTINCT]select_listFROM{ table_reference|(subquery)}[WHEREconditions][PARTITIONBYcolumns][WINDOW window_clause][SLIDING(duration)][FILL(fill_mode[,...])][GROUPBYcolumns][HAVINGconditions][ORDERBYcolumns][LIMITcount[OFFSEToffset]][SLIMIT count[SOFFSEToffset]];window_clause ::INTERVAL(duration[,offset])|SESSION(ts_column,gap)|STATE_WINDOW(state_column)|EVENT_WINDOWSTARTWITHexprENDWITHexpr|COUNT_WINDOW(count[,sliding_count])2. select_list-- 列选择SELECTts,currentFROMmeters;-- 所有列SELECT*FROMmeters;-- 表达式SELECTts,current*voltageASpowerFROMmeters;-- 别名SELECTcurrentASampFROMmeters;-- 聚合函数SELECTAVG(current),MAX(current)FROMmeters;-- 时间窗口元数据SELECT_wstart,_wend,_wduration,AVG(current)FROMmetersINTERVAL(1h);-- 子表名/TagSELECTtbname,location,AVG(current)FROMmetersGROUPBYtbname,location;-- CASE WHENSELECTts,CASEWHENcurrent100THENHIGHWHENcurrent50THENMIDELSELOWENDASlevelFROMmeters;3. FROM 子句-- 单表SELECT*FROMd001;-- 超级表自动跨子表SELECT*FROMmeters;-- 多表JOINSELECT*FROMt1JOINt2ONt1.tst2.ts;-- 子查询SELECTMAX(avg_c)FROM(SELECTAVG(current)ASavg_cFROMmetersPARTITIONBYtbnameINTERVAL(1h))sub;-- VIEW视图SELECT*FROMv_meters;-- 系统表SELECT*FROMinformation_schema.ins_databases;4. WHERE 子句-- 基本比较WHEREcurrent100WHEREts2026-06-01WHERElocationBeijing-- 范围WHEREtsBETWEEN2026-06-01AND2026-06-30WHEREcurrentBETWEEN50AND100-- 集合WHERElocationIN(Beijing,Shanghai)WHEREtbnameLIKEd0%-- 模糊WHEREdescriptionLIKE%error%WHEREdescriptionMATCHregex-- 复合WHERE(locationBeijingORlocationShanghai)ANDtsnow-1h-- NULLWHEREcurrentISNULLWHEREphaseISNOTNULL-- 时间表达式WHEREtsnow-1hWHEREtstoday()-1d5. PARTITION BY-- 按子表分组聚合SELECTtbname,AVG(current)FROMmetersPARTITIONBYtbname;-- 多列分区SELECTlocation,groupid,MAX(current)FROMmetersPARTITIONBYlocation,groupid;-- PARTITION BY 窗口最常见SELECTtbname,_wstart,AVG(current)FROMmetersPARTITIONBYtbnameINTERVAL(1h);6. 窗口子句-- INTERVALINTERVAL(1h)INTERVAL(1h,30m)-- 偏移INTERVAL(1h)SLIDING(30m)-- 滑动-- SESSIONSESSION(ts,30m)-- STATESTATE_WINDOW(status)-- EVENTEVENT_WINDOWSTARTWITHt80ENDWITHt60-- COUNTCOUNT_WINDOW(100)COUNT_WINDOW(100,50)-- 滑动-- FILLINTERVAL(1h)FILL(NULL)INTERVAL(1h)FILL(VALUE,0)INTERVAL(1h)FILL(PREV)INTERVAL(1h)FILL(NEXT)INTERVAL(1h)FILL(LINEAR)INTERVAL(1h)FILL(NONE)7. ORDER BY / LIMIT-- 排序ORDERBYts-- 升序默认ORDERBYtsDESC-- 降序ORDERBYcurrentDESC,ts-- 多列-- 限制LIMIT10LIMIT10OFFSET100-- 子表级 LIMIT (PARTITION 内)SELECT*FROMmetersPARTITIONBYtbnameLIMIT1SLIMIT10;-- SLIMIT: 限制 partition 数量-- LIMIT: 每个 partition 的行数8. 集合操作-- UNION ALL (TDengine 主要支持)SELECTts,currentFROMmeters_2025UNIONALLSELECTts,currentFROMmeters_2026;-- UNION去重视版本支持代码示例综合查询示例-- 复杂业务查询SELECTtbname,_wstartAShour_start,AVG(current)ASavg_c,MAX(current)ASmax_c,MIN(current)ASmin_c,COUNT(*)ASsample_cntFROMmetersWHEREts2026-06-01ANDts2026-07-01ANDlocationIN(Beijing,Shanghai)PARTITIONBYtbnameINTERVAL(1h)FILL(LINEAR)HAVINGavg_c20ORDERBYhour_startDESC,max_cDESCLIMIT100;子查询应用-- 找出 TOP 10 平均电流的设备SELECTtbname,avg_cFROM(SELECTtbname,AVG(current)ASavg_cFROMmetersWHEREtsnow-1dPARTITIONBYtbname)subORDERBYavg_cDESCLIMIT10;-- 与历史均值比较SELECTm.ts,m.current,h.avg_cFROMmeters mJOIN(SELECTtbname,AVG(current)ASavg_cFROMmetersWHEREtsnow-1dPARTITIONBYtbname)hONm.tbnameh.tbnameANDm.tsm.ts;系统表查询-- 数据库列表SELECTname,vgroups,replicaFROMinformation_schema.ins_databases;-- 表数量SELECTCOUNT(*)FROMinformation_schema.ins_tablesWHEREdb_namepower;-- 正在执行的查询SELECT*FROMperformance_schema.perf_queriesORDERBYexec_usecDESC;性能考量子句执行顺序逻辑执行顺序与书写顺序不同 1. FROM (定位表) 2. WHERE (行过滤) 3. PARTITION BY (分区) 4. WINDOW (窗口划分) 5. GROUP BY (分组) 6. HAVING (分组后过滤) 7. SELECT (投影) 8. DISTINCT (去重) 9. ORDER BY (排序) 10. LIMIT (限制)性能要点项影响WHERE 含时间决定扫描量WHERE 含 Tag子表筛选PARTITION BY 基数内存与并发排序非 ts 列需实际排序LIMIT 含早停大幅加速FAQQ1: PARTITION BY 和 GROUP BY 有什么区别PARTITION BY分区后保留各分区独立窗口/计算GROUP BY聚合为每组一行通常时序数据用 PARTITION BY 配合窗口Q2: 子查询有什么限制支持单层子查询。多层嵌套和复杂关联子查询支持有限。Q3: SELECT * 和列举列有区别吗列举列列裁剪生效I/O 更少。SELECT * 在大表上低效。Q4: 系统表怎么用SHOWDATABASES;-- 简洁SELECT*FROMinformation_schema.ins_databases;-- 详细Q5: 怎么测试 SQL 性能EXPLAINSELECT...;EXPLAINANALYZESELECT...;参考系统构架篇01-《TDengine 整体架构全景》02-《集群拓扑深度解析》03-《MNode 内部机制深度解析》04-《RPC 通信层深度解析》05-《VNode 生命周期》06-《RAFT 共识协议》07-《端到端的消息流》数据模型01-《数据库创建与参数详解》02-《超级表/子表/普通表》03-《支持数据类型深度解析》04-《TDengine Tag 设计哲学与 Schema 变更机制》05-《TDengine 虚拟表实现原理》存储引擎01-《TDengine 存储引擎概览》02-《TDengine MemTable 深度解析》03-《TDengine WAL 预写日志机制》04-《TDengine 数据文件格式》05-《TDengine Commit 与 Flush 机制 》06-《TDengine Compaction 合并策略 》07-《TDengine 数据保留与 TTL》08-《TDengine 压缩编码机制》09-《TDengine Cache 与 Last 查询加速》10-《TDengine 逻辑计划生成》查询引擎01-《TDengine 查询引擎概览》02-《TDengine SQL 解析与词法分析》03-《TDengine 语义分析与 AST 重写》04-《TDengine 逻辑计划生成》05-《TDengine 物理计划生成》06-《TDengine 扫描算子》07-《TDengine 聚合算子》08-《TDengine 聚合算子》09-《TDengine 连接算子》10-《TDengine 排序、填充与投影》11-《TDengine 分布式查询执行》12-《TDengine EXPLAIN 与查询优化》数据写入01-《TDengine SQL INSERT》02-《TDengine 无模式写入》03-《TDengine STMT 写入》04-《TDengine 写入内部流程》05-《TDengine 数据更新删除》数据订阅01-《TDengine 数据订阅》02-《TDengine 订阅 vs Kafka》03-《TDengine TMQ 消费流程》04-《TDengine 内部机制》05-《TDengine TMQ 最佳实践》预聚合01-《TDengine RSMA》02-《TDengine TSMA — 时间维度的物化聚合视图》03-《TDengine SMA 内部实现》索引01-《TDengine Tag 索引》02-《TDengine SMA 索引》SQL 语句01-《TDengine DDL》关于 TDengineTDengine 专为物联网IoT平台、工业大数据平台设计。其中TDengine TSDB 是一款高性能、分布式的时序数据库Time Series Database同时它还带有内建的缓存、流式计算、数据订阅等系统功能TDengine IDMP 是一款AI原生工业数据管理平台它通过树状层次结构建立数据目录对数据进行标准化、情景化并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

相关新闻

LangChain SmithDB:为AI Agent打造轻量级可观测性数据库

LangChain SmithDB:为AI Agent打造轻量级可观测性数据库

2026/9/3 18:51:24

1. 这不是“造轮子”,是给AI Agent装上“黑匣子”和“行车记录仪”LangChain “不务正业”,居然从零造了个数据库?——这个标题乍看像调侃,实则精准戳中了当前Agent开发最痛的盲区:我们天天调用agent.invoke()&#xf…

工程签证、进度款、结算审核,这些要点一定要掌握!

工程签证、进度款、结算审核,这些要点一定要掌握!

2026/8/26 12:24:24

工程签证、进度款、结算审核,这些要点一定要掌握! 一、工程签证 1几种应不予签证的现象(经常出现而又容易忽略) (1)工程签证的内容应尽量保证详细,包括签证的原因(含引用资料的编号)、位置、尺寸、数量、日期、所用材料、结算方式、结算单价等等,签证单后必须附造成…

BLDC电机原理、控制与应用实战解析

BLDC电机原理、控制与应用实战解析

2026/8/26 12:59:04

1. BLDC电机的基本概念与工作原理第一次拆解无刷电机时,我被它精巧的结构震撼到了——没有传统电机中碳刷与换向器的摩擦接触,却能实现更高效的运转。这种被称为BLDC(Brushless DC Motor)的电机,正在从无人机螺旋桨到家…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/26 23:35:16

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…