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

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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序