[mysql]SQL 事务︰ 签署"中的"不匹配"走出去"

标签: MySQL
发布时间: 2017/1/9 21:47:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

呸,复杂的问题要问数据库。

我有一系列的登录和注销事件超过一天的一系列的用户。 我想要跟踪所有那些忘了签的人︰ 即在给定日期的最后一个事务是"IN"。我想要总结这些人是谁︰

personid  datetime            activity
ABC1      2015-09-01 08:00:00 IN
DEF2      2015-09-01 09:00:00 IN
ABC1      2015-09-01 12:00:00 OUT
ABC1      2015-09-01 13:04:00 IN
GHI3      2015-09-01 08:30:00 IN
GHI3      2015-09-01 15:50:00 OUT
ABC1      2015-09-01 14:00:00 OUT
ABC1      2015-09-01 14:20:00 IN
GHI3      2015-09-03 16:01:00 IN
ABC1      2015-09-03 16:00:00 OUT

所以在这种情况下,我想要一个列表︰

DEF2 didn't sign out 
GHI3 didn't sign out second time

注意,如图所示,某一天可能有多个标志-中/标志-出局。

解决方法 1:

您可以选择最后一项activity (按日期),如果它是在然后,有不是出在此之后

SELECT * FROM (
                SELECT personid, 
                max(datetime),
                activity FROM table GROUP BY personid) t1
WHERE t1.activity = 'OUT'
赞助商