【发布时间】:2011-07-02 22:44:41
【问题描述】:
假设我有这个(MySQL)数据库,按时间戳递增排序:
Timestamp System StatusA StatusB
2011-01-01 A Ok Ok
2011-01-02 B Ok Ok
2011-01-03 A Fail Fail
2011-01-04 B Ok Fail
2011-01-05 A Fail Ok
2011-01-06 A Ok Ok
2011-01-07 B Fail Fail
对于该系统,如何选择 StatusA 从上一行更改的行? StatusB 无关紧要(我在这个问题中展示它只是为了说明每个系统可能有许多连续的行,而 StatusA 不会改变)。在上面的示例中,查询应返回 2011-01-03 行(对于 SystemA,StatusA 在 2011-01-01 和 2011-01-03 之间更改)、2011-01-06、2011-01-07。
查询应该在具有数万条记录的表中快速执行。
谢谢
【问题讨论】:
-
为什么
2011-01-07会被退回而2011-01-04不会? -
@Andriy: 2011-01-04 未返回,因为状态 A 在 2011-01-02 和 2011-01-04 上都正常(都适用于系统 B)。
-
@Jonathan:当然!谢谢。