我有一个包含4列的MySQL表(名为formstatus
):id
,form
,status
和timestamp
,{{1} }作为主键,id
和form
是唯一的。我希望得到一组行(特别是status
),其中每个status
的时间戳最晚。我试过了
form
但它不起作用,因为在where子句中显然不允许聚合。那么,是否存在将返回我正在寻找的信息的查询?
答案 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)