RiaruQAQ
2019-09-10 09:27
采纳率: 50%
浏览 1.0k

Mysql中如何写sql计算与上一条匹配记录的时间差

问题描述:

假设我现在有一张表*tbA* 表结构说明如下:

id uuid()
item 事项
time 时间(yyyyMMdd)

我先在要做的就是查出每条记录与上一次相同事项的时间差距(天数)
如记录:

1 item1 2019-09-10
2 item3 2019-09-09
3 item1 2019-09-09
4 item1 2019-09-01

查询出的对应结果(id 与 时间差)应该是

1 1
2 -
3 8
4 -

sql应该如何写呢?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • lppzyt 2019-09-10 10:40
    已采纳

    select t3.id,t3.item,if(subDay is null,"-",subDay) subday from (select t1.id,t1.item,
    DATEDIFF(t1.dateTime,
    (select t2.dateTime from itemtest t2
    where t1.dateTime>t2.dateTime and
    t1.item=t2.item order by dateTime desc limit 1 )
    ) subDay
    from itemtest t1) t3;
    可以把t3这一层给剥去,主要是把null给转换为'-'。表名我起的是itemtest。你改下你要的表名和字段。逻辑是:t1是遍历整张表的数据。利用这个进行子查询,因为是前一次确定满足条件的最多是一条数据,所以用了limit.

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题