使用来自不同表的数据计算SQL SELECT语句中的附加列

时间:2015-11-07 15:26:39

标签: mysql sql

我很感激帮助生成一个执行以下操作的正确查询。

我有这样的表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独占)。我怎么能这样做?

1 个答案:

答案 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