限制最大/最终值的组查询

时间:2020-08-11 10:40:43

标签: sql

我有一个带有这些列的表“ element”:

  • id(主键)
  • ref_id(对另一个表的引用)
  • 时间(添加行的时间)
  • 值(给定时间ref_id的值)

我需要获取每个ref_id的最后一个值和时间。

当前,我针对a中返回正确结果的每个ref_id进行查询:

SELECT time, value
FROM element
WHERE ref_id = <ID>
 AND time = (SELECT max(time) FROM element WHERE ref_id = <ID>)

但是,这需要很长时间才能执行多个查询(每个查询大约需要1秒)。我一直在寻找对所有ref_id的唯一查询,以尝试加快总时间。

有可能吗?

谢谢

1 个答案:

答案 0 :(得分:0)

使用相关子查询:

SELECT time, value
FROM element e
WHERE e.time = (SELECT MAX(e2.time) FROM element e2 WHERE e2.ref_id = e.ref_id);

大多数数据库都可以利用以下索引:element(ref_id, time desc)