PARTITION BY 和order by 共用之后查询出问题

【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境

【TDengine 版本】3.3.8.8

【操作系统以及版本】乌班图

【部署方式】非容器部署

【集群节点数】1

【集群副本数】0

【描述业务影响】给定时间起止区间目标时间戳、一批标识编码(cable_code/device_id/data_type 等 TAG 字段),从 TDengine 超级表中,对每一个指定的编码,单独筛选出该编码下、时间区间内,距离目标时间戳绝对值差最小的 1 条数据

【遇到的问题:问题现象及影响】SELECT * FROM fsm_actuator_system WHERE ts >=‘2026-03-16 13:58:46.000’ AND ts <= ‘2026-03-16 13:59:46.000’ PARTITION BY device_id ORDER BY ABS(CAST(ts AS BIGINT) - 1773640756000) ASC SLIMIT 1

这种功能想用一句sql语句实现需要怎么处理,对sql响应要求较高。

提供的信息太少了,无法判断和分析。
1、fsm_actuator_system的结构是什么样的?请使用 desc fsm_actuator_system;显示schema

2、出了问题,具体是什么问题?

这个表是一个超级表,我想实现在一定时间范围内,每个子表距离目标时间戳绝对值差最小的 1 条数据, 如果不加order BY 条件可以实现那每个表的一条数据,加上就不行了。想问问不用子查询,直接一个sql能不能实现

可以参考一下这个sql:

SELECT * FROM (select min(ABS(CAST(ts AS BIGINT) - TO_UNIXTIMESTAMP('2026-03-16 13:59:16', 0))) as minv, * FROM fsm_actuator_system WHERE ts >=‘2026-03-16 13:58:46.000’ AND ts <= ‘2026-03-16 13:59:46.000’ PARTITION BY device_id);