RiaruQAQ 2019-09-10 09:27 采纳率: 50%
浏览 1240
已采纳

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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办