mysql表字段时间是索引,怎么获取机台最新时间的一条数据,跟优化查询速度嘞

image.png

FineReport Ccc 发布于 2024-6-13 11:07
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
华莉星宸Lv7高级互助
发布于2024-6-13 11:09

最新数据

select * from biao

where max_time = (

select max(max_time) from 表)

  • Ccc Ccc(提问者) 但是机台的最新时间可能不一致喔 影响吗
    2024-06-13 11:12 
  • 华莉星宸 华莉星宸 回复 Ccc(提问者) 你是说每台机器的最新时间不一样?
    2024-06-13 11:15 
  • Ccc Ccc(提问者) 回复 华莉星宸 是的
    2024-06-13 11:15 
  • 华莉星宸 华莉星宸 回复 Ccc(提问者) 那就把每台机器的最新时间求出来呗,求最大时间的地方增加一个机器分组,外面在套一层SQL
    2024-06-13 11:17 
  • 华莉星宸 华莉星宸 回复 Ccc(提问者) 参考:select * from biao where 机器 || max_time in (select 机器 || max_time from (select 机器, max(max_time) as max_time from 表 group by 机器) b) c
    2024-06-13 11:25 
最佳回答
0
snrtuemcLv8专家互助
发布于2024-6-13 11:09

select * from 表 where 时间字段=(select max(时间字段) from 表)

  • Ccc Ccc(提问者) 但是机台的最新时间可能不一致喔 影响吗
    2024-06-13 11:12 
最佳回答
0
很困想睡觉Lv5初级互助
发布于2024-6-13 11:19

row_number开窗函数

最佳回答
0
CD20160914Lv8专家互助
发布于2024-6-13 11:19

这样?

select a.* from 表名称 a

join (select 机台,max(时间) as 最大时间 from 表名称 group by 机台) b on a.机台=b.机台

and a.时间=b.最大时间

最佳回答
0
HHHHH123Lv7中级互助
发布于2024-6-13 11:20

SELECT t1.*FROM 表 t1INNER JOIN (    SELECT devicename, MAX(max_time) AS max_time    FROM 表    GROUP BY devicename ) t2ON t1.devicename = t2.devicename AND t1.max_time = t2.max_time;

如果8.0支持开窗

SELECT devicename, max_time, other_columns

FROM (

    SELECT devicename, max_time, other_columns, 

           ROW_NUMBER() OVER (PARTITION BY devicename ORDER BY max_time DESC) as rn

    FROM 表

) t

WHERE t.rn = 1;

  • 6关注人数
  • 210浏览人数
  • 最后回答于:2024-6-13 11:20
    请选择关闭问题的原因
    确定 取消
    返回顶部