Mysql的重复:查找时间戳差小于x的行
我有如下表:
Field Type
id int(11)
user varchar(64)
date int(11)
key int(11)
日期采用时间戳格式。我正在寻找一种方法来查找所有行,其中连续行之间的时间戳差异小于 x。可能吗?
Mysql的重复:查找时间戳差小于x的行
我有如下表:
Field Type
id int(11)
user varchar(64)
date int(11)
key int(11)
日期采用时间戳格式。我正在寻找一种方法来查找所有行,其中连续行之间的时间戳差异小于 x。可能吗?
这是可能的,假设时间戳意味着date
. 这是一个使用相关子查询来获取下一个date
值的版本:
select t.*
from (select t.*,
(select date
from yourtable t2
where t2.date > t.date
order by t2.date
limit 1
) as NextDate
from yourtable t
) t
where <difference calculation goes here>;
编辑:
以上是标准SQL。在 MySQL 中,您也可以使用变量来执行此操作。
select t.*
from (select t.*, @nextdate as nextdate, @nextdate := date
from yourtable t
order by date desc
) t
where <difference calculation goes here>;
这种方法有两个问题。首先,变量的使用需要对结果集进行顺序处理(在 MySQL 中这不是什么大问题,因为我认为无论如何都会发生这种情况)。select
更重要的是,无法保证对 的评估顺序。换句话说,这可能有效,但不能保证有效。
顺便说一句,许多其他数据库支持该lead()
功能,这将是执行此操作的“正确”方式。不幸的是,MySQL 不支持窗口函数。