表里面有很多条记录,有FID,FLAG两个字段,里面有不少记录的FID都相同,我想删除那些(FID字段内容多余重复的且flag字段等于1 )的所有数据;求该操作的sql语句,最好是一条语句来实现!!

解决方案 »

  1.   

    delete from tablename a
    where FLAG = 1 and exists ( select FID from tablename where FID = a.FID group by FID having count(FID) > 1)delete前做backup一下table
      

  2.   

    delete from tablename t
    where FLAG = 1 and exists ( select FID from tablename where FID = t.FID group by FID having count(FID) > 1)
      

  3.   

    delete from tname t
    where t.FLAG=1 and t.FID in(select FID from tname group by FID having count(FID)>1)
      

  4.   

    DragonBill(用户中文昵称------静观其变,以静制动) 
    的方法对
    同时做好备份
      

  5.   

    FID相同的记录,要留下一笔,不能全部删除掉!!!!应该怎么做!
      

  6.   

    delete from tablename a
    where FLAG = 1 and exists ( select FID from tablename where FID = a.FID group by FID having count(FID) > 1) and rowid > (select min(rowid) from tablename where FID = a.FID group by FID having count(FID) > 1)其实这种SQL的效率不好,有条件的话还是分四步进行:
    1,挑出符合条件的记录放入临时表tmpTable;
    2,删除tablename中符合条件的所有记录;
    3,删除tmpTable中相同的记录(仅留下一笔);
    4,将tmpTable中的记录导回tablename;