gpt4 book ai didi

sql - 查询以按日期列表返回匹配或最近的先前记录

转载 作者:搜寻专家 更新时间:2023-10-30 22:23:08 24 4
gpt4 key购买 nike

我有一个按日期排序的记录表。每天最多有1条记录,但有些日子没有记录(周末和银行假期)。

当我按日期查询记录时,如果那天不存在记录,我会按日期查询以前的记录。例如:

SELECT * FROM rates WHERE date <= $mydate ORDER BY date DESC LIMIT 1;

给定一个日期列表,我将如何构造一个查询以返回与每个日期的精确或最接近的先前记录匹配的多个记录?这有可能在单个查询中实现吗?

日期数组可能分布在一个很大的时间范围内,但我不一定想要整个时间范围内的每条记录(例如,查询分布在一年时间范围内的 20 个日期)。

最佳答案

您可以将日期构建为派生表,然后使用 SQL 逻辑。横向连接很方便:

select v.dte, r.*
from (values ($date1), ($date2), ($date3)
) v(dte) left join lateral
(select r.*
from rates r
where r.date <= v.dte
order by r.date desc
limit 1
) r
on 1=1;

您可能会发现使用数组传递日期并在该数组上使用 unnest() 很有用。

关于sql - 查询以按日期列表返回匹配或最近的先前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58322344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com