gpt4 book ai didi

日期之间的 MySQL 连接条件

转载 作者:行者123 更新时间:2023-11-29 01:56:17 24 4
gpt4 key购买 nike

我需要执行一个 MySQL 连接,结合每天的温度测量值和当天的最高温度。

  • 每天都会存储一个新的温度测量值。
  • 最高温度按时段存储,使用该时段的开始日期。

我有两个表:temperatures(包含测量值)和 max_temperatures(包含一段时间内的最高温度)。

table temperatures
================
id (int)
temperature (decimal)
measure_date (date)

table thresholds
================
id (int)
max_temperature (decimal)
startdate (date)

比如说,我在表 thresholds 中有两条记录:

1 | 15 | 2014-12-31
2 | 14 | 2015-01-04

有没有办法得到这样的记录集?

measure_date | temperature | max_temperature
--------------------------------------------
2015-01-01 | 12 | 15
2015-01-02 | 11 | 15
2015-01-03 | 12 | 15
2015-01-04 | 14 | 14
2015-01-05 | 16 | 14
2015-01-06 | 13 | 14

不幸的是,阈值表不包含结束日期,或者我可以在 temperatures.measure_date 介于 thresholds.startdate 和 thresholds.enddate 之间进行连接。

最佳答案

因为你没有结束日期,你将不得不使用子查询找到自己的最大结束值......我是如何解决它的:

select b.measure_date, b.temperature, a.max_temperature
from thresholds a
inner join temperatures b on b.measure_date >= a.startdate
where a.startdate = (select max(startdate)
from thresholds a2
where a2.startdate <= b.measure_date);

基本上我在这里做的是:

  • 加入两个表,条件是 measure_date 高于或等于开始日期。
  • 确保开始日期尽可能早,因为我们没有结束日期。

关于日期之间的 MySQL 连接条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994367/

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