在mySQL中选择具有不同ID的最新条目

时间:2016-03-22 23:14:57

标签: php mysql sql timestamp

所以,我有两张桌子。

表:测量

PersonID - 值 - 时间戳 - TypeID

表:测量类型

TypeID - 测量名称

我想显示来自2个不同TypeID的2个最新条目。因此,我需要从TypeID 1中选择一个具有最新时间戳的值,并从TypeID 2中选择一个具有最新时间戳的值。我还必须使用表之间的TypeID获取测量的名称。我想将我的选择限制在特定的PersonID。

我尝试过不同的方法,但我只是不明白该怎么做。

目前我的代码是:

SELECT 
  m.value, 
  m.timestamp, 
  m_t.measurement_name
FROM measurements m
INNER JOIN measurement_type m_t ON m.typeid = m_t.typeid
GROUP BY m.typeid
ORDER BY timestamp DESC

我的第一个问题,所以如果需要,我可以尝试更好地解释它:D

2 个答案:

答案 0 :(得分:0)

您可以使用子查询获取每种类型的max时间戳,然后join将结果返回给自身:

select m.typeid, m.value, m.timestamp, mt.measurement_name
from measurements m
    join (select max(timestamp) maxtimestamp, typeid
          from measurements 
          group by typeid) m2 on m.timestamp = m2.maxtimestamp
                             and m.typeid = m2.typeid
    join measurement_type mt on m.typeid = mt.typeid

答案 1 :(得分:0)

您可以使用以下查询获取给定类型ID的最新条目:

select m.personID, m.value, m.typeID, mt.measurement_name
from measurements m join measurements_type mt on m.typeID = mt.typeID
where m.typeID = ?
order by m.timestamp desc limit 1;