我有一个表,其中包含 200 个不同的传感器和相应的传感器值。我想创建一个查询,其中不同的传感器值位于不同的列中。
我已经尝试过 join 和 union 但它没有按预期给出。
从测量值中选择*;//简化
<小时/>| sensorId | Value |
| 6 | 110 |
| 6 | 120 |
| 6 | 180 |
| 8 | 250 |
| 8 | 280 |
| 8 | 290 |
<小时/>目标
block 引用>
| sensor6 | sensor8|
| 110 | 250 |
| 120 | 280 |
| 180 | 290 |
PS:传感器的行始终相等。表中还有时间戳列。我认为放在这里是无关紧要的。
最佳答案
您可以根据时间戳加入。假设您的传感器每小时保存一次测量值。你可以
SELECT
DATE_FORMAT(sensor6.timestamp, '%Y-%m-%d-%H'),
sensor6.value as sensor6,
sensor8.value as sensor8
FROM
sensorMeasures sensor6
JOIN
sensorMeasures sensor8 ON
DATE_FORMAT(sensor6.timestamp, '%Y-%m-%d-%H') =
DATE_FORMAT(sensor8.timestamp, '%Y-%m-%d-%H')
WHERE
sensor6.sensorId = 6
AND sensor8.sensorId = 8
通过加入时间戳,您将获得一个行表,其中包含同一日期/时间的所有传感器数据对。 两个 where 子句只是选择正确的行(其中第一个传感器数据来自第 6 个传感器,第二个传感器数据来自第 8 个传感器)。
当然,您可以更改 DATE_FORMAT 格式以匹配数据在该数据库中存储的频率。
关于jquery - 如何将查询结果合并为新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57210526/