我想选择两个特定值,第一个值是ID_SENSOR为1的最后一个插入行,第二个值是ID_SENSOR为2的最后一个插入行。
我的数据库表:
我的查询:
SELECT DATA FROM (SELECT * FROM registovalores WHERE ID_SENSOR = '1' OR ID_SENSOR = '2' ORDER BY ID_SENSOR DESC LIMIT 2) as r ORDER BY TIMESTAMP
我的查询只是从ID_SENSOR 1打印最后一个值,这意味着我只获取最后插入的值,而不是IDS中最后一个插入的值。
我想像这样打印我的价值观:
ID_SENSOR 1 = 90
ID SENSOR 2 = 800
我需要在查询中更改哪些内容?
谢谢。
答案 0 :(得分:0)
一种方法使用相关子查询:
SELECT rv.*
FROM registovalores rv
WHERE rv.ID_SENSOR IN (1, 2) AND
rv.TIMESTAMP = (SELECT MAX(rv2.TIMESTAMP)
FROM registovalores rv2
WHERE rv.ID_SENSOR = rv2.ID_SENSOR
);
答案 1 :(得分:0)
您必须有两个单独的查询,每个传感器一个。
select id_sensor, data
from the_table
where id_sensor = 'sensor_1'
order by timestamp desc -- the latest value is the first to come
limit 1; -- only pick the top (latest) row.
如果要在单个数据库往返中查询多个值,请考虑在多个此类查询之间使用union all
。
请注意,此类查询可能会返回一行或零行,因为特定传感器的数据可能尚未提供。