所以,我有两个表。
表:测量
PersonID-值-时间戳-TypeID
表:测量类型
TypeID-测量名称
我想显示来自2个不同TypeID的2个最新条目。因此,我需要从具有最新时间戳的TypeID 1中选择一个Value,从具有最近时间戳的TypeID 2中选择一个Value。我还必须使用表之间的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
您可以使用子查询来获取每个类型的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
您可以使用以下查询来获取给定类型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;