当前位置: 代码迷 >> Oracle开发 >> -刪除相同紀錄-解决办法
  详细解决方案

-刪除相同紀錄-解决办法

热度:50   发布时间:2016-04-24 07:36:21.0
------------------------------------------------刪除相同紀錄----------------------------------------------------
我的數據庫中有很多相同的紀錄 所能看到的數據 都是相同的 需要刪掉其中一筆
SQL code
select e.*from employee ewhere rowid > (select min(rowid)                  from employee b                 where e.employee_id = b.employee_id)

我用上面的數據 并沒有查出數據  
然後 我用手動的方法找到一個相同的id=‘123’ 用123這個id去查詢rowid 可是也只能查到一個rowid 可是123的數據明明是重復的 為什么呢?

用什么辦法 能夠刪除我數據庫中的重復數據呢?

------解决方案--------------------
SQL code
delete   from employee  where rowid not in (             select min(rowid)               from employee               group by employee_id     )
------解决方案--------------------

SQL code
select jobfrom (select job,row_number()over (partition by job order by job )rn      from emp)--要按什么删除 order by里 排下序就可以了
------解决方案--------------------
然後 我用手動的方法找到一個相同的id=‘123’ 用123這個id去查詢rowid 可是也只能查到一個rowid 可是123的數據明明是重復的 為什么呢?
--------------------------------------------------

你是如何确认这条数据明明是重复的?估计是你没有commit
------解决方案--------------------
SQL code
DELETE FROM EMPLOYEE E2 WHERE ROWID NOT IN       (SELECT MAX(E1.ROWID)          FROM EMPLOYEE E1         WHERE E1.EMPLOYEE_ID = E2.EMPLOYEE_ID);
------解决方案--------------------
删除的方法是对的,查看有没有提交
  相关解决方案