MySQl:select查询的问题
我只需要一个查询的帮助,例如我的表MySQl:select查询的问题,mysql,select,Mysql,Select,我只需要一个查询的帮助,例如我的表 id time status sid 1 10:00 0 1 2 12:00 0 2 3 11:00 1 1 4 13:00 1 2 (状态0=登录,状态1=注销) 我想知道在一行用户登录和注销时间。 select查询的结果应如下所示: id time status sid loginid 11 10:00 0 1 0 12 12:00 0 2
id time status sid
1 10:00 0 1
2 12:00 0 2
3 11:00 1 1
4 13:00 1 2
(状态0=登录,状态1=注销)
我想知道在一行用户登录和注销时间。
select查询的结果应如下所示:
id time status sid loginid
11 10:00 0 1 0
12 12:00 0 2 0
13 11:00 1 1 11
14 13:00 1 2 12
结果:
id time time2 sid
1 10:00 11:00 1
2 12:00 13:00 2
结果中的一行应该包含相同的sid对—状态为0的一行和状态为1的下一行,因此我会合并两次—第一次是用户的登录时间,第二次是注销时间?我假设每个用户只进行一次登录
SELECT id,time,(select time from table C where M.sid=C.sid and status = 1 LIMIT 1),sid
FROM table M WHERE status = 0
如果在表中再添加一列,如下所示:
id time status sid loginid
11 10:00 0 1 0
12 12:00 0 2 0
13 11:00 1 1 11
14 13:00 1 2 12
你可以有这样的查询
SELECT id,time,(select time from table C where C.loginid=M.id),sid
FROM table M WHERE status = 0
如果sid=1的记录超过2条,该怎么办。或者你可以说,如果一个用户多次登录,你会跟踪它吗?(需要更新表结构)查询应该为该用户返回多行,因为他可以多次登录唯一的问题是我需要将他的登录和注销时间放在同一行中。我需要为他的每个会话匹配他的状态0和状态1。请看我的回答。这将对您有效。这将限制用户只能登录一次,但我用户可以有多个登录,因此这对我无效。您的表结构问题:1)时间应为时间戳或日期时间2)登录和注销之间没有关联。这将导致每个用户只能登录一次,但我需要拥有他的所有登录名。您的表结构需要修改,以便在登录/注销之间建立链接,否则将很困难。甚至您的时间字段也不存储完整的时间戳…:(时间戳不是问题,我给出的时间只是一个例子,问题是我必须找出这个表结构的一些东西,它为同一个用户返回多个登录会话。更新了我的答案,以获得更多的列和查询。