按类别获取第二个最新时间戳的行?

时间:2012-05-23 14:56:45

标签: mysql sql

我有一个包含4列的MySQL表(名为formstatus):idformstatustimestamp,{{1} }作为主键,idform是唯一的。我希望得到一组行(特别是status),其中每个status的时间戳最晚。我试过了

form

但它不起作用,因为在where子句中显然不允许聚合。那么,是否存在返回我正在寻找的信息的查询?

2 个答案:

答案 0 :(得分:3)

尝试此查询 -

SELECT
  t1.*, COUNT(*) pos
FROM formstatus t1
  LEFT JOIN formstatus t2
    ON t2.form = t1.form AND t2.timestamp >= t1.timestamp
GROUP BY
  t1.form, t1.timestamp
HAVING
  pos = 2;

答案 1 :(得分:0)

生成错误是因为您无法在WHERE子句中使用聚合。尝试将您的条件移至HAVING条款。

GROUP BY form
HAVING timestamp < max(timestamp)