SQL使用MAX()函数时怎么获取该条记录的其他信息,优化
表TABLE_A
id x y device_id locate_time
1 189405 138762 0000200101b4 1484720129552
2 297699 88270 0000200101b5 1484721110698
3 297699 138762 0000200101b6 1484723110905
4 297600 133362 0000200101b5 1484723110956
5 297666 123333 0000200101b5 1484723113956
第一条sql: id x y的值有误
select id, x, y, device_id, from_unixtime(max(locate_time)/1000, '%Y-%m-%d %H:%i:%S') times from
device_position where build_id = '862300010010300012'
and floor = 'f1' group by device_id;
第二条sql: 查询出记录是正确的,但是重新查了一遍,还有什么优化的地方?
select b.id, b.x,b.y,a.device_id, a.locate_time from (
select device_id, max(locate_time) locate_time from
device_position where build_id = '862300010010300012'
and floor = 'f1' group by device_id
) a LEFT JOIN (
select id,x,y,build_id,floor,locate_time from device_position
) b on a.locate_time = b.locate_time
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试下面语句看看
```sql
select t1.id, t1.x, t1.y, t1.device_id, t1.locate_time
from device_position t1
inner join
(select device_id,max(locate_time) maxtime
from device_position group by device_id) t2
on t1.device_id = t2.device_id and t1.locate_time = t2.maxtime
where t1.build_id = '862300010010300012' and t1.floor = 'f1'
```