删除重复的记录,并且要按时间先后删除,把最近的那条记录保留如:date               instance     status     number2007-4-2 15:30:13     0           A        2001001
2007-4-2 15:28:13     0           B        2001001
2007-4-2 15:15:12     0           A        2001001
2007-4-2 15:30:13     0           A        2001007需要得到的结果是
date               instance     status     number2007-4-2 15:30:13     0           A        2001001
2007-4-2 15:30:13     0           A        2001007
高手指点

解决方案 »

  1.   

    如果是oracle数据库
    第一步,按以下方式查询,调试使其正常运行(数据库不同,sql也有微小的差异)
    select date ,instance,status,number from Test as a
    where date<>
     (select max(date) from Test 
       where a.number=number) 
    第二步,执行删除
     del TEST where number in
    (select number from(select date ,instance,status,number from Test as a
    where date<>
     (select max(date) from Test 
       where a.number=number))
      

  2.   

    date最好把它转换为带时间秒的字符串格式,to_char(date,'yyyy-mm-dd:HH:ss') 好象是这样的格式吧,你再确认一下,然后再比较select date ,instance,status,number from Test as a
    where to_char(date,'yyyy-mm-dd:HH:ss')<>
     (select max(to_char(date,'yyyy-mm-dd:HH:ss')) from Test 
       where a.number=number)
      

  3.   

    del TEST where number in
    (select number from(select date ,instance,status,number from Test as a
    where date<>
     (select max(date) from Test 
       where a.number=number))
    and rownum<=100
    删完后把那个rownum改成200,然后依此递增,删! 删上3万次就OK了!!
      

  4.   

    如果只是要删除重复纪录,我觉得你不如把最近的纪录取出插入临时表,truncate源表,反插回来。
    上面感觉总要扫两次表。
      

  5.   

    业务都在跑 哪里可以TRUNCATE