我有一个记录进程速率的速率表
DateTime Rate
2013-11-25 05:00:00 22
2013-11-25 06:00:00 78
2013-11-25 07:00:00 33
2013-11-25 07:10:00 56
2013-11-25 08:30:00 12
以及一个记录上述数据可能无效的时间段的停机时间表
StartDateTime EndDateTime
2013-11-25 04:59:00 2013-11-25 05:10:00
2013-11-25 07:00:00 2013-11-25 07:15:00
如何获得以下输出,其中停机时间表中任何时间段之间记录的任何速率值都被固定值替换,例如50?
DateTime Rate
2013-11-25 05:00:00 50
2013-11-25 06:00:00 78
2013-11-25 07:00:00 50
2013-11-25 07:10:00 50
2013-11-25 08:30:00 12
最佳答案
这应该可以解决问题:
SELECT r.datetime, if(d.startDatetime IS NULL, r.rate, 50) rate
FROM rates r
LEFT JOIN downtime d
ON r.datetime BETWEEN d.startDatetime AND d.endDatetime
fiddle here .
关于mysql - 基于子查询覆盖数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20227113/