有人能用这个问题启发我吗?假设我有一个包含如下记录的表:
+--------------+--+
| ID room time | |
+--------------+--+
| 1 1 10:00 | |
| 2 2 10:01 | |
| 3 1 10:01 | |
| 4 1 10:02 | |
| 5 1 10:03 | |
| 6 1 10:04 | |
| 7 2 10:02 | |
+--------------+--+
我想只在房间 1 连续时才获得时间计数。此特定表的结果应为:
+--------------+
| id room time |
+--------------+
| 1 1 00:03 |
+--------------+
提前谢谢。
您可以针对自身联接表来实现这一点:
假设表的名称为 tbl。 我的查询不会是 100% 正确的,因为我不知道您的数据类型是什么时间,但概念就在那里。
A 表的 ID 必须小于具有 B ID 的 ID,但具有相同的房间。
C 表表示记录检查 A 和 B 之间没有不同房间的 ID,这就是为什么 C.ID 为 NULL
SELECT A.ROOM, MAX(B.TIME-A.TIME) FROM tbl A
INNER JOIN tbl B on A.room=B.room and A.ID<B.ID
LEFT OUTER JOIN tbl C on A.room<>B.room and A.ID<C.ID and C.ID<B.ID
WHERE C.ID IS NULL
GROUP BY a.room