sql - 获取每个日期最接近的记录

标签 sql mysql

我正在尝试创建一个查询,返回表 skucompetition 中表 creationdateformat 中每个日期的所有价格。

澄清一下,creationdateformat 包含以下日期:

creationdateformat
2010-10-25
2010-10-26
2010-11-10
2010-11-24
2010-11-25

skucompetition 的价格如下:

sku              creationdate           price
PCR-BR2495112   2010-10-26 16:06:03    24.99
PCR-BR2495112   2010-11-10 13:01:43    27.99
PCR-BR2495112   2010-11-25 12:24:26    26.51

对于日期 2010-10-25,它应该返回 0,因为它是在第一个价格存在之前。

对于日期 2010-10-26,它应该返回 24,99

对于日期 2010-11-10 和 2010-11-24,它应该返回 27.99

对于日期 2010-11-25,它应该返回 26.51

等等。

如何才能最好地实现这一目标?

最佳答案

这应该为您指明正确的方向......

从您的示例数据来看,您正在查找特定日期之前或最新记录。

您只对一条记录感兴趣,所以您应该 limit您选择的第一条记录。

您可以简化之前或之上部分。 “今天之前或当天”的任何事情与“明天之前”的任何事情都是一样的。因此,您将查找输入日期 plus one day 之前的任何内容'。这简化了查询,因为您不必担心一天中的确切时间。

最后,为了确保您获得最新记录,您必须order记录。

在伪代码中它将是:

select the first record
from skucompetition
where creationdate is before (input date + one day)
order by creationdate so most recent record comes first

您应该处理应用程序中返回 0 的特殊情况。如果您正确构建了查询,它将不会匹配第一个日期之前的输入日期的任何记录。这时您的应用程序应该处理“return 0”情况。

关于sql - 获取每个日期最接近的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4277786/

相关文章:

MySQL 使用搜索条件进行分组

php - Laravel:按 ID 搜索并显示找到的行数据

mysql - CoarseGrainedExecutorBackend ERROR Spark

php - echo 语句在 echo 语句中不起作用

php - 我想按降序排列我的产品列表

php - 基于MySQL、PHP的网站统计

sql - 在 postgresql 的子查询中使用外部查询结果

mysql - 像 SQL 查询一样分组

sql - 谁能帮我用我的 pl/sql 脚本更新/合并数据库

mysql - SQL在具有多个条件的选择中对行进行排序