先查询下:
SELECT * 
FROM TB T
WHERE ROWID<>(SELECT MAX(B.ROWID) FROM TB B WHERE T.A = B.A AND T.S = B.S AND T.D = B.D AND T.F = B.F)
然后删除:
DELETE FROM TB T WHERE ROWID<>(SELECT MAX(B.ROWID) FROM TB B WHERE T.A = B.A AND T.S = B.S AND T.D = B.D AND T.F = B.F)

解决方案 »

  1.   

    delete from table t1 where where t1.rowid !=
    (select max(rowid) from table t2
    where t1.a=t2.a and t1.s=t2.s and t1.f=t2.f and t1.d=t2.d)
      

  2.   

    delete from table t1 where where t1.rowid !=
    (select max(rowid) from table t2
    where t1.a=t2.a and t1.s=t2.s and t1.f=t2.f and t1.d=t2.d)
    好!!!厉害
      

  3.   

    基本的思路是不是就是 查询表中字段相同的记录 从中选择rowid最大的
    然后将不是这个rowid的记录删除??
      

  4.   

    delete from 
    (
    select * from test group by test.a,test.s,test.d,test.f having count(*)>1 
    ) t where t.rownumber>1;