个人觉的第一种方法会好点,第二种方法还是要先取出所有的记录,而且循环的次数是整个表的条数,循环算是数据逻辑处理,消耗会大,还不如直接就distinct查询出来。

解决方案 »

  1.   

    查出重复记录
    SQL> select rowid,bm,mc from a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);ROWID              BM   MC
    ------------------ ---- --------------------
    000000D5.0000.0002 1111 1111
    000000D5.0001.0002 1112 1111
    000000D5.0002.0002 1113 1111
    000000D5.0003.0002 1114 1111删除重复记录
    SQL> delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);再来导出
      

  2.   

    我觉得对单个字段就用distinct就行。
    如果又是子查询嵌套,又是聚集函数(如max ())速度可能会更慢。
    子查询意味着对表的扫描次数翻倍,聚集函数又增加额外的运算时间。