【发布时间】:2022-11-05 02:59:08
【问题描述】:
我有一个有 2 列的表(还有更多,但这些是重要的)timestamp 和 analysisId。两者都没有限制,但实际上时间戳将是唯一的。许多行具有相同的analysisId 和不同的timestamps。我需要一个查询,它只为每个analysisId 返回最高的timestamp
例如,数据可能看起来像
timestamp | analysisId
1234 | 1
1236 | 1
1300 | 2
1337 | 3
1400 | 3
我想要的结果是
timestamp | analysisId
1236 | 1
1300 | 2
1400 | 3
目前,我有
SELECT "timestamp", analysisId FROM myData GROUP BY (analysisId, "timestamp") ORDER BY "timestamp" DESC LIMIT 1;
但是,当然这只会给我一个结果,而我希望每个结果每个 analysisId
【问题讨论】:
-
如果您想要每个 analysisId 一行,只需
GROUP BY analysisId。 -
这回答了你的问题了吗? Select first row in each GROUP BY group?
-
并使用
MAX()获得最高值。 -
为什么
LIMIT 1?跳过 LIMIT,因为您希望返回几行。
标签: sql