还是先select count>2的 保存一个临时变量再删除 ,再insert吧如果表就一列,没有主建,个人认为不可能只删除一条记录的,有谁有好办法没?

解决方案 »

  1.   

    Delete tableA Where RowID in
         (
         select rowid
         from tableA a 
         where a.rowid != 
         (
         select max(rowid) from tableA b 
         where a.rowB= b.rowB
         ..........
         )
         )
      

  2.   

    楼上可以吗??tableA 又没有 RowID 字段
      

  3.   

    DELETE TABLEA C WHERE C.ROWID NOT IN( 
      SELECT A.ROWID FROM 
     TABLEA A,
     (select MIN(ID) ID, rowB from tablea GROUP BY rowB) B 
     WHERE  A.rowB = B.rowB
      AND B.ID = A.ID);
    其中ID为表的主键,在oracle数据库中测试通过,mysql中应该不能用,mysql不支持子查询。
      

  4.   

    我觉得要用个函数来实现,毕竟这是Update不是Delete
      

  5.   

    不知道是否允许用自定义函数,否则先编个去重的函数,然后一个update就可以了
      

  6.   

    自定义函数能作为 update set xxx= 的后面的输入么?如果可以,我想这样行。