我现在正在进行四次单独查询以选择我需要的信息。
f.e。
SELECT value FROM data where sensor=123 AND value_id=a
SELECT value FROM data where sensor=123 AND value_id=b
SELECT value FROM data where sensor=123 AND value_id=c
SELECT value FROM data where sensor=123 AND value_id=d
现在我正在尝试使用一些代码。我不知道是否以正确的方式,但是这样的事情是可能的:
SELECT value180,value181,value182,value183
FROM (
SELECT
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value180,
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value181,
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value182,
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value183
FROM data
WHERE sensor_id = 1605850
AND value_id IN ("1.8.0","1.8.1","1.8.2","1.8.3")
) a
最好有一个查询... thx提前帮助!
注意:我必须使用每个传感器每个值的每天最大值。在上面的第一个例子中,这个max函数只是为了简化而省略了。
正如您所看到的,每个value_id都有每小时取值。
我需要什么: 对于定义的value_id'
,我需要昨天的最高值。f.e。 1.8.0 = 3726.12,1.8.1 = 663.69,......
通过我的综合查询,我得到错误的值,但格式我想如何获得值是正确的:< / p>
答案 0 :(得分:2)
尝试
SELECT value FROM data
WHERE sensor=123 AND value_id IN ('a', 'b', 'c' , 'd');
或
SELECT value FROM data
WHERE sensor=123 AND value_id IN (SELECT DISTINCT value_id FROM data);
答案 1 :(得分:0)
经过一段时间的大自然暂停,我能够解决我的问题。
SELECT
(SELECT MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) FROM data WHERE sensor_id = 1605850 AND value_id = "1.8.0") as value180,
(SELECT MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) FROM data WHERE sensor_id = 1605850 AND value_id = "1.8.1") as value181,
(SELECT MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) FROM data WHERE sensor_id = 1605850 AND value_id = "1.8.2") as value182,
(SELECT MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) FROM data WHERE sensor_id = 1605850 AND value_id = "1.8.3") as value183
就是这样。