mysql leftjoin只取一条的方法

博客围绕时间匹配问题展开,需在关联记录表里找到主表时间之前的第一条记录。起初参考百度用leftjoin子查询里的row_number方法,但该子查询不能引用其他表,最终通过谷歌找到解决办法,即把关联表CreateTime在主表StartTime后的第一条leftjoin到主表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据时间匹配,需要找到关联的记录表里, 在主表时间之前的第一条记录

查了下百度,有的根据leftjoin子查询里面row_number做的. 但是leftjoin的子查询不能引用其他表

最后还是查谷歌找到了解决办法

https://stackoverflow.com/questions/15626493/left-join-only-first-row

 

把关联表CreateTime在主表StartTime后面的第一条, leftjoin到主表后边: 

SELECT zb.StartTime,glb.CreateTime FROM 主表 zb
left join 关联表 glb on glb.ID=(
        select ID from 关联表 t where t.CreateTime<zb.StartTime
        order by t.CreateTime desc limit 1
) ORDER BY 主表.StartTime

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值