需要在mysql媒体服务器日志表中查找当前连接
我有一个媒体服务器登录到一个mysql数据库,它为每个连接、播放、停止、断开连接事件记录一个单独的行。我想做的是查找没有相关断开事件的连接事件或没有相关停止事件的播放事件需要在mysql媒体服务器日志表中查找当前连接,mysql,Mysql,我有一个媒体服务器登录到一个mysql数据库,它为每个连接、播放、停止、断开连接事件记录一个单独的行。我想做的是查找没有相关断开事件的连接事件或没有相关停止事件的播放事件 date time category event clientId stream streamId =============================================================================== 2010
date time category event clientId stream streamId
===============================================================================
2010-04-21 10:30:00 session connect 1
2010-04-21 10:30:05 stream start 1 stream1 1
2010-04-21 10:35:00 stream stop 1 stream1 1
2010-04-21 10:35:00 session disconnect 1
2010-04-21 10:35:00 session connect 2
2010-04-21 10:35:05 stream start 2 stream2 1
2010-04-21 10:35:08 session connect 3
2010-04-21 10:35:13 stream start 3 stream1 1
2010-04-21 10:37:05 stream stop 2 stream2 1
2010-04-21 10:37:10 stream start 2 stream1 2
我想能够得到一个当前会话的总数,并在一个单独的查询,当前正在播放的流的总数
谢谢
罗杰。我最后使用了一个复合select语句
select * from (select *, (select true from statslog as t1 where t1.clientId = statslog.clientId and t1.event = 'disconnect') as `disconnected`
from statslog where statslog.category = 'session' and statslog.event = 'connect') as t2 where isnull(t2.disconnected);
如果数据集中没有唯一的会话id,这可能会很困难。假设值为1的clientId在历史上可能多次出现,也可能同时打开多个会话。嗨,Martin,每个会话的客户端id都是唯一的,因此实际上,它是会话id。在实际数据中,它是一个10位随机数,除非服务器重新启动,否则不应重复。此外,我刚刚添加了streamId列。对于在会话中播放的流,这始终从1开始。会话中的每个后续流都会增加streamId。