我很感激帮助生成一个执行以下操作的正确查询。
我有这样的表1:
TIME DATA PRESSURE
2015-03-01 12:00 213.2 222
2015-03-01 12:01 203.2 222
和表2
TIMESTART TIMEEND CORRECTIONFACTOR
2014-01-01 00:00:00 2015-01-01 00:00:00 1.1234
2015-01-01 00:00:00 2016-01-01 00:00:00 1.1234
我需要在表1的SQL SELECT查询内部(SELECT * FROM table1)生成如此定义的附加列:
CORRECTED = DATA* PRESSURE^CORRECTIONFACTOR,
其中CORRECTIONFACTOR从表2中正确获取,该时间属于TIMESTART-TIMEEND时间间隔(TIMESTART包含和TIMEEND独占)。我怎么能这样做?
答案 0 :(得分:2)
使用简单的JOIN
,如下所示:
SELECT t1.time, t1.data * t1.pressure ^ t2.correctionfactor AS result
FROM table1 t1
JOIN table2 t2 ON t1.time >= t2.timestart AND t1.time < t2.timeend
请注意,您不能使用expr BETWEEN min AND max
。
https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between
不确定问题中^
运营商的意图是什么。在MySQL中,它表示按位异或。如果你想要力量,那就使用POW()
。
https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_pow