-1

我想根据最近 7 个结果的另一个表的结果从一个表中选择某些值。

tb 限制: SELECT * from limits where id_device = ?

minTemp|maxTemp|minHum|maxHum
10      20      40     60

tb传感器: SELECT temperature, humidity, smoke, reading_time FROM sensor WHERE id_device = $id_device order by reading_time desc limit 7

temperature| humidity | smoke | reading_time
 15.20       30.20      555.12   15:44:52
 25.40       54.40     1900.51   15:40:31
 and so on for the first 7 results

我想形成一个数组,其中包含与第一个表中的条件相匹配的每个值以及读取时间。

例如:温度 < minTemp 的数组及其读数时间

对这个有什么建议吗?

4

2 回答 2

0
select s.id_device, s.reading_time, s.smoke,
    l.minTemp, s.temperature, l.maxTemp,
    l.minHum, s.humidity, l.maxHum
from tbSensor s
inner join tbLimit l on l.id_device = s.id_device
where (
       s.temperature < l.minTemp
    or s.temperature > l.maxTemp
    or s.humidity < l.minHum
    or s.humidity > l.maxHum
)
于 2020-04-20T20:50:27.250 回答
0

您可以执行 JOIN,如下所示:

select
  s.*
from sensor s
join limits l on s.temperature not between l.minTemp and l.maxTemp
              or s.humidity not between l.minHum and l.maxHum
where l.id_device = ?
于 2020-04-20T20:50:42.097 回答