【问题标题】:Delete record where duplicate in part of raw 2 advanced [duplicate]删除原始 2 高级部分中重复的记录 [重复]
【发布时间】:2014-10-19 17:56:30
【问题描述】:

我是新@sql,表名CHECKINOUT 数据库名NEWFP 我需要删除所有记录,其中检查时间在1 到5 分钟或相同且必须是相同的用户ID 但保留火灾记录

我问了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

【问题讨论】:

    标签: sql sql-server sqlite


    【解决方案1】:

    我想你想要这个

    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 fiddle http://sqlfiddle.com/#!3/8da28/24

    【讨论】:

    • thaaaaaaaaaaaaaaaaaaaaaaaaaaaanks ;) 它的工作
    • sql fiddle 怎么样?
    • 我已经用示例数据说明了 sql 中的查询,以便更好地理解它。
    • 这个查询可以简化;见:sqlfiddle.com/#!3/8da28/24
    • +1 非常好@Rimas。谢谢。我要更新我的答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2021-03-17
    • 2012-01-06
    • 2019-08-04
    相关资源
    最近更新 更多