Mysql 如何使用多个输入/输出删除考勤中不需要的数据

Mysql 如何使用多个输入/输出删除考勤中不需要的数据,mysql,mysql-8.0,time-and-attendance,Mysql,Mysql 8.0,Time And Attendance,如何删除多个考勤记录?我尝试了几个查询来删除未命名的数据。还要验证状态标识 0 = Time In and 1 = Time Out 这是样品 预期产出: user_id verify_date verify_state prev_state next_state TO_Date 14 2019-11-15 07:29:00 0 1 1 2019-11

如何删除多个考勤记录?我尝试了几个查询来删除未命名的数据。还要验证状态标识

 0 = Time In and 1 = Time Out
这是样品

预期产出:

user_id        verify_date           verify_state   prev_state  next_state      TO_Date
14           2019-11-15 07:29:00         0               1         1       2019-11-15 19:12:00
15           2019-11-15 22:12:00         0               1         1       2019-11-16 06:29:00
我尝试过的示例查询

delete from tbl_excel_attendance where CONCAT(User_id,verify_date) in (select  CONCAT(User_id,verify_date)  from
(select
A.*,
LAG(A.Verify_State) OVER (PARTITION BY A.User_id ORDER BY A.User_id, A.verify_date) as Prv_row_State,
LEAD(A.Verify_State) OVER (PARTITION BY A.User_id ORDER BY A.User_id, A.verify_date) as Nxt_row_State,
LEAD(A.verify_date) OVER (PARTITION BY A.User_id ORDER BY A.User_id, A.verify_date)  as TO_Date

from tbl_excel_attendance as A ) as X
where
(X.Prv_row_State = 1 and X.verify_state = 1 and  X.Nxt_row_State = 0) OR
(X.Prv_row_State = 1 and X.verify_state = 1 and  X.Nxt_row_State = 1 and TIMESTAMPDIFF(Hour,X.verify_date,X.TO_Date)< 12.01) OR
(X.Prv_row_State = 0 and X.verify_state = 1 and  X.Nxt_row_State = 1 and TIMESTAMPDIFF(Hour,X.verify_date,X.TO_Date)< 12.01) OR
(X.Prv_row_State = 0 and X.verify_state = 0 and  X.Nxt_row_State = 1) OR
(X.Prv_row_State = 0 and X.verify_state = 0 and  X.Nxt_row_State = 0) OR
(X.Prv_row_State is null and X.verify_state = 1 and  X.Nxt_row_State = 1))
根据我的分析,删除了哪些考勤

编辑:他们的生物特征是门禁,这意味着如果他们需要外出,他们需要点击生物特征

用户id为15的是夜班


您如何知道用户id为15的是夜班?夜班什么时候开始?你还没有说明你想要实现什么-看起来是基于最早和最晚的轮班验证日期?我是基于最早和最晚的轮班验证日期,而不是基于轮班。你能解释一下用户15的不同日期的逻辑吗?我不清楚如果轮班“2019-11-16 22:12”或轮班模式发生变化,会发生什么。验证日期“2019-11-16 22:12”是他第一次出席,因为你可以看到他的验证状态为0=时间进入,最后一次验证状态为1,即2019-11-16 06:29=超时