我的數據庫中有很多相同的紀錄   所能看到的數據  都是相同的    需要刪掉其中一筆select e.*
from employee e
where rowid > (select min(rowid) 
                 from employee b 
                where e.employee_id = b.employee_id)我用上面的數據  并沒有查出數據     
然後 我用手動的方法找到一個相同的id=‘123’     用123這個id去查詢rowid   可是也只能查到一個rowid      可是123的數據明明是重復的    為什么呢?用什么辦法 能夠刪除我數據庫中的重復數據呢?

解决方案 »

  1.   

    delete 
      from employee 
     where rowid not in (
                 select min(rowid)
                   from employee 
                  group by employee_id
         )      
         
      

  2.   


    select job
    from (select job,row_number()over (partition by job order by job )rn
          from emp)
    --要按什么删除 order by里 排下序就可以了
      

  3.   

    然後 我用手動的方法找到一個相同的id=‘123’    用123這個id去查詢rowid  可是也只能查到一個rowid   可是123的數據明明是重復的   為什么呢?
    --------------------------------------------------你是如何确认这条数据明明是重复的?估计是你没有commit
      

  4.   

    DELETE FROM EMPLOYEE E2
     WHERE ROWID NOT IN
           (SELECT MAX(E1.ROWID)
              FROM EMPLOYEE E1
             WHERE E1.EMPLOYEE_ID = E2.EMPLOYEE_ID);