在考虑MySQL中行的id时,找出两个时间戳之间的差异?

时间:2014-11-25 18:14:36

标签: mysql timestamp

所以基本上我在 MySQL

中有一个表
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| ID        | int(11)  | NO   |     | NULL    |       |
| Query     | text     | YES  |     | NULL    |       |
| timestamp | datetime | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+

ID表示用户ID,查询表示他给机器的查询和他给出的时间戳。我试图通过检查表的每个记录并将当前时间戳与前一个时间戳进行比较来查找用户可以与机器进行的会话。如果差异低于300秒的阈值,那么我认为它是一个会话。

但是,这种方式我没有考虑到同一个用户可能多次使用该机器。如何检查以前的ID是否与我正在检查的记录的当前ID相同?

我一直在网上搜索,这是我到目前为止所提出的。

select Count(*) from(
select  t.*,
    TIMESTAMPDIFF(second, @prevQT, `timestamp`) as session,
    @prevQT:=t.`timestamp`
    from myTable t,
    (select @prevQT:=(Select min(`timestamp`) from myTable)) vars
    ORDER BY ID) subquery_alias
    where session < 300;

提前谢谢。

更新

示例数据:

1 , "google"        , '2013-08-02 08:58:06'
1 , "dogs"          , '2013-08-02 09:00:09'
1 , "dogs and cats" , '2013-08-02 09:02:02'
1 , "toys"          , '2013-08-02 09:10:09'
1 , "games for kids", '2013-08-02 09:12:25'
2 , "football"      , '2013-08-02 09:12:28'
2 , "manchester"    , '2013-08-02 09:14:37'
2 , "championship"  , '2013-08-02 09:17:48'
3 , "flowers"       , '2013-08-02 09:20:31'

对其应用查询,结果应为4,因为ID为1的用户使用机器两次,时间差超过5分钟。

0 个答案:

没有答案