从两个ID中选择最后两个值

时间:2017-02-10 19:47:26

标签: mysql sql

我想选择两个特定值,第一个值是ID_SENSOR为1的最后一个插入行,第二个值是ID_SENSOR为2的最后一个插入行。

我的数据库表:

enter image description here

我的查询:

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

我需要在查询中更改哪些内容?

谢谢。

2 个答案:

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

请注意,此类查询可能会返回一行或零行,因为特定传感器的数据可能尚未提供。