我有一个表
<表类>
user_id
状态
时间戳
tbody><<tr>空 空 2022-05-05 01:01:00 空 空 2022-05-05 01:02:00 7461 空 2022-05-05 01:03:00 空 打开 2022-05-05 01:04:00 空 空 2022-05-05 01:05:00 空 在 2022-05-05 01:06:00 8474 空 2022-05-05 01:07:00 空 空 2022-05-05 01:08:00 空 解决 2022-05-05 01:09:00 表类>
如果你正在使用MySQL,你可以这样做:
SELECT t1.user_id,
MIN(SEC_TO_TIME(TIMESTAMPDIFF(SECOND, t1.timestamp, t2.timestamp))) AS timestamp
FROM tab t1
INNER JOIN tab t2
ON t1.timestamp < t2.timestamp
AND t1.user_id IS NOT NULL
AND t2.status IS NOT NULL
GROUP BY t1.user_id
它所做的是在user_id和status不为null的两个时间戳上应用自连接,然后只获得user_id分组时间中最小的差异。
你会在这里找到一把小提琴。