mysql查询某个时间点之前的数据_mysql提取里某个时间点最近的数据?

本文介绍了一种在MySQL中查询某个时间点之前数据的方法,并详细阐述了如何找出同一SUBJECT_ID、ITEM_ID下,B_TIME距离A_TIME最近的记录。通过两步操作,首先筛选出符合条件的记录,然后与D_ITEMD表进行比对,对于没有完全匹配的情况,插入对应数据。整个过程涉及到数据的分组、连接以及左连接操作。
摘要由CSDN通过智能技术生成

来了来了,想到一个可能比较麻烦的方法,如果后面想到更简便的再更新,步骤如下:

一、找出原始表符合条件的记录

找出同一SUBJECT_ID、ITEM_ID下,B_TIME距离A_TIME最近的记录(并且A_TIME大于B__TIME),可以分为两步;

第一先找出符合条件的b_time,也就是在满足A_TIME大于B__TIME条件下找出最大的b_time,代码结果如下:

select subject_id,item_id,max(b_time) maxtime #求得最大的b_time,给别名maxtimefrom 原始表 where a_time>b_time #筛选a_time>b_time的记录group by subject_id,item_id; #用subject_id和item_id做分组

第二步是将上一步查询的表和原始表做内连接,连接条件是subject_id、item_id、maxtime相等,这样就找出符合留存需求的记录了,代码和结果如下:

select 原始表.* from 原始表

join (select subject_id,item_id,max(b_time) maxtime

from 原始表 where a_time>b_time

group by subject_id,item_id) as a

on 原始表.subject_id=a.subject_id and 原始表.item_id=a.item_id and 原始表.b_time=a.maxtime;

二、和D_ITEMD表进行比对

和D_ITEMD表中的ITEMID进行比对,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值