--结果有错.
应为:
1   2008-03-25     1900-01-01 10:25     01 
2   2008-03-25     1900-01-01 17:26     01 
3   2008-03-25     1900-01-01 19:00     03 delete tb from tb t where jqid not in (select min(jqid) from tb where id = t.id)

解决方案 »

  1.   

    create table tb(id int, rq varchar(10) , sj datetime, jqid varchar(10))
    insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:26', '01') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:30', '02') 
    insert into tb values(3, '2008-03-25', '1900-01-01 19:00', '03') 
    godelete tb from tb t where jqid not in (select min(jqid) from tb where id = t.id) select * from tbdrop table tb/*
    id          rq         sj                                                     jqid       
    ----------- ---------- ------------------------------------------------------ ---------- 
    1           2008-03-25 1900-01-01 10:25:00.000                                01
    2           2008-03-25 1900-01-01 17:26:00.000                                01
    3           2008-03-25 1900-01-01 19:00:00.000                                03
    */
      

  2.   

    --如果要算上日期.
    create table tb(id int, rq varchar(10) , sj datetime, jqid varchar(10))
    insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:26', '01') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:30', '02') 
    insert into tb values(3, '2008-03-25', '1900-01-01 19:00', '03') 
    godelete tb from tb t where jqid not in (select min(jqid) from tb where id = t.id and rq = t.rq) select * from tbdrop table tb/*
    id          rq         sj                                                     jqid       
    ----------- ---------- ------------------------------------------------------ ---------- 
    1           2008-03-25 1900-01-01 10:25:00.000                                01
    2           2008-03-25 1900-01-01 17:26:00.000                                01
    3           2008-03-25 1900-01-01 19:00:00.000                                03
    */
      

  3.   

     龟兄好快!!
    我可能没说清:
    .......
    insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03') 
    insert into tb values(1, '2008-03-25', '1900-01-01 17:26', '01') 
    insert into tb values(1, '2008-03-25', '1900-01-01 17:30', '02') 
    insert into tb values(1, '2008-03-25', '1900-01-01 19:00', '03') 
    .......
    该怎么办?
           
        
      

  4.   

    ////*************///
    --如果要算上日期.
    create table tb(id int, rq varchar(10) , sj datetime, jqid varchar(10))
    insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:26', '01') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:30', '02') 
    insert into tb values(3, '2008-03-25', '1900-01-01 19:00', '03') 
    godelete tb from tb t where jqid not in (select min(jqid) from tb where id = t.id and rq = t.rq) select * from tbdrop table tb/////********************//////
    这样不能达到楼主的目的哦,楼主是要求sj字段中五分钟之内只保留一条记录!
      

  5.   

    create table tb(id int, rq varchar(10) , sj datetime, jqid varchar(10)) 
    go
    insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:31', '04') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:33', '05') 
    insert into tb values(2, '2008-03-25', '1900-01-01 17:26', '01')  
    insert into tb values(2, '2008-03-25', '1900-01-01 17:30', '02')  
    insert into tb values(3, '2008-03-25', '1900-01-01 19:00', '03')  
    go
    delete x from tb x
    left join
    (select id,min(jqid) mjqid ,ceiling((datediff(mi,msj,sj)*1.0+1)/5) gid from tb a
    inner join 
    (select min(sj) msj,id mid from tb group by id) b
    on id=mid
    group by id, ceiling((datediff(mi,msj,sj)*1.0+1)/5)
    ) y
    on x.id=y.id and mjqid=jqid
    where gid is nullselect * from tb
    /*
    1 2008-03-25 1900-01-01 10:25:00.000 01
    1 2008-03-25 1900-01-01 10:30:00.000 03
    2 2008-03-25 1900-01-01 17:26:00.000 01
    3 2008-03-25 1900-01-01 19:00:00.000 03*/
    go
    drop table tb
    go
      

  6.   

    如果要日期列,即 rq列也参与运算,那么做法也简单,将 sj 列里的 1900-01-01 替换成 rq值就可以了。同时,说明一点,我假设同id中,日期时间大的jqid也大。如果走向不一致,那么将 jqid的比较换为 日期加时间的比较就可以了。
      

  7.   


    create table tb(id int, rq varchar(10) , sj datetime, jqid varchar(10)) insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '01')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03')  
    insert into tb values(1, '2008-03-25', '1900-01-01 17:26', '01')  
    insert into tb values(1, '2008-03-25', '1900-01-01 17:30', '02')  
    insert into tb values(1, '2008-03-25', '1900-01-01 19:00', '03')  
    go
    delete tb 
    where sj not in
    ( select (select min(b.sj) from tb b where datediff(second,a.sj,b.sj) between -300 and 0)as groups
      from tb a
    )
    go
    select * from tb 
    drop table tb 
    /*
    id          rq         sj                      jqid
    ----------- ---------- ----------------------- ----------
    1           2008-03-25 1900-01-01 10:25:00.000 01
    1           2008-03-25 1900-01-01 17:26:00.000 01
    1           2008-03-25 1900-01-01 19:00:00.000 03
    */
    --  datediff(second,a.sj,b.sj) between -300 and 0) 表示5分钟即300秒
      

  8.   

      不行啊!!
      insert into tb values(1, '2008-03-25', '1900-01-01 10:25', '06')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:27', '02')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:30', '03')  
    insert into tb values(1, '2008-03-25', '1900-01-01 10:31', '04') 
    insert into tb values(1, '2008-03-25', '1900-01-01 10:33', '05') 
    insert into tb values(1, '2008-03-25', '1900-01-01 17:36', '01')  
    insert into tb values(1, '2008-03-25', '1900-01-01 17:30', '02')  
    insert into tb values(3, '2008-03-25', '1900-01-01 19:00', '03')  
    insert into tb values(2, '2008-03-25', '1900-01-01 17:26', '01')  
    insert into tb values(2, '2008-03-25', '1900-01-01 17:30', '02')
    ....
    出现连环时 需要运行多遍!!