employees表中的数据如下:
employee_id         last_name  department_id
110                  王一 90                  
101                  张一 90                  
200                  刘一 20                  
201                  李一 30                  
110                  裴一 110                 
203                  许一 110                 
205                  胡一 380                 
100                  王一 90                  
101                  张一 90                  
200                  刘一 20                  
201                  李一 30                  
202                  裴一 110                 
203                  许一 110                 
205                  胡一 380                 
207                  马一 380                 
209                  弓一 400     
能不能不用建临时表删除表中重复的数据
谢谢!
            

解决方案 »

  1.   

    可以,GOOGLE一下到处都是解决方案。
      

  2.   

    delete from employees 
     where rowid not in 
      (select rowid from (select employee_id,last_name,department_id,min(rowid) rowid 
       from employees 
       group by employee_id,last_name,department_id))
      

  3.   

    最高效的语句delete from employees
     where rowid in (select rid
                       from (select rowid rid,
                                    row_number() over(partition by employee_id , last_name,department_id  order by rowid) rn
                               from employees)
                      where rn <> 1);
      

  4.   

      建临时表执行效率更高些,当然不建也可以。
    delete from employees a
     where a.rowid not in
           (select max(rowid) from employees group by last_name, department_id) 
      

  5.   

    參照
    http://topic.csdn.net/u/20080626/00/43d0d10c-28f1-418d-a05b-663880da278a.html
      

  6.   

    create table employees_BK as select distinct * from employees
      

  7.   

    select distinct fieldname(字段名) from tablename(表名) 你试一下这样看可以不?
      

  8.   

    xliming100 的答案多删除了二条没重复的记录,
    不过还是谢谢你们了,向各位高手学习!