SQL使用MAX()函数时怎么获取该条记录的其他信息,优化

发布于 2021-12-09 04:31:48 字数 2809 浏览 656 评论 1

表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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

为你鎻心 2021-12-09 19:50:08

试试下面语句看看

```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'

```

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文