2014-10-19 53 views
0

我是新的@sql,表名CHECKINOUT DB名称NEWFP我需要删除所有记录,其间的检查时间从1到5分钟或相同,并且必须是相同的用户ID,但保持火灾记录删除部分原始2高级复制的记录

我问的问题here,但我不能明白的答案

USERID  CHECKTIME   CHECKTYPE VERIFYCODE [SENSORID] WorkCode SN 
10  2014-06-30 19:17:37.000 I   0   100   0  0 
10  2014-06-30 19:18:42.000 I   0   100   0  0 
10  2014-06-30 19:19:46.000 I   0   100   0  0 
10  2014-06-30 20:17:58.000 I   0   100   0  0 
10  2014-06-30 20:20:46.000 I   0   100   0  0 

USERID  CHECKTIME   CHECKTYPE VERIFYCODE [SENSORID] WorkCode SN 
10  2014-06-30 19:17:37.000 I   0   100   0  0 
10  2014-06-30 20:17:58.000 I   0   100   0  0 

回答

0

我想你想这

delete cio1 
from CHECKINOUT cio1 
where exists (select 1 from CHECKINOUT cio2 
       where cio1.UserId = cio2.UserId 
       and cio2.checktime < cio1.checktime 
       and datediff(mi,cio2.checktime,cio1.checktime) between 0 and 5 
      ) 

select * from CHECKINOUT 

支票上的SQL小提琴这里http://sqlfiddle.com/#!3/8da28/24

+0

thaaaaaaaaaaaaaaaaaaaaaaaaaanks;)其工作 – user1472886 2014-10-19 19:02:39

+0

什么有关SQL小提琴? – user1472886 2014-10-19 19:07:39

+0

我已经在示例数据的sql小提琴中说明了查询,以更好的方式理解它。 – 2014-10-19 19:10:58