有人可以用这个问题来启发我吗? 我们假设我有一个包含多个记录的表:
+--------------+--+
| 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 |
+--------------+
提前致谢。
答案 0 :(得分:2)
你可以加入一个表来对抗自己:
让我们说这个表的名字是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