mysql相同编号显示在一行_mysql-获取具有相同标识符的前一行

在构造mysql语句时需要帮助,在该语句中,我需要查找同一表中的前几行。

我的数据如下:

历史ID(自动递增)、对象ID(存在多次)、时间戳…

例子:

1, 2593, 2018-08-07 09:37:21

2, 2593, 2018-08-07 09:52:54

3, 15, 2018-08-07 10:41:15

4, 2593, 2018-08-07 09:57:36

此数据的某些属性:

自动增量越高,相同对象id的时间戳越晚

一个对象id可能只有一行

对象id和时间戳的组合总是唯一的,不可能重复

对于每一行,我需要找到具有相同对象id的前一行。

我只是做了一些测试,然后说到了这一点:

SELECT

i1.history_id,

i1.object_id,

i1.timestamp AS state_time,

i2.timestamp AS previous_time

FROM

history AS i1

LEFT JOIN (

select timestamp as timestamp,history_id as history_id,object_id as object_id

from history

group by object_id

) AS i2 on i2.object_id = i1.object_id and i2.history_id < i1.history_id

现在,我只需要剪切子查询,即我只为每一行获取history_id的最高值,但当我使用limit 1时它不起作用,因为这样我将只获得一个值。

你知道怎么解决这个问题吗?或者你有更好更有效的技术?

性能是一个关键点,因为我有310万行的数据增长得更高。

谢谢您!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值