我有一个包含用户登录数据的 MySQL 表。
user | date | type
-----+---------------------+------
1 | 2011-01-05 08:00:00 | login
1 | 2011-01-06 09:00:00 | login
1 | 2011-01-06 10:00:00 | logout
1 | 2011-01-06 09:50:00 | login
鉴于上表,我想通过添加一个名为“持续时间”的新单元格来计算注销日期和上次登录日期之间的时间差。例如。注销日期为“2011-01-06 10:00:00”;上次登录日期为“2011-01-06 09:50:00”。
结果应该看起来像这样。 type=login 的行不应具有持续时间值。
user | date | type | duration
-----+---------------------+--------+----------
1 | 2011-01-05 08:00:00 | login | -
1 | 2011-01-06 09:00:00 | login | -
1 | 2011-01-06 10:00:00 | logout | 10min
1 | 2011-01-06 09:50:00 | login | -
提前致谢,
mawo
SELECT x.*, TIMEDIFF(x.logout_date, x.login_date) as duration
FROM
(
SELECT a.user_id, a.`date` as logout_date,
(SELECT MAX(b.`date`) FROM table1 b WHERE b.`date` <a.`date`
and b.user=a.user and b.type = 'login') as login_date
FROM table1 a WHERE a.type ='logout'
)x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)