經典SQL面試題4:高效的刪除重複記錄方法
經典SQL面試題4:高效的刪除重複記錄
需求:刪除表中的重複記錄,無需考慮排列順序
1 建立表
create table emp(id number(5), name varchar2(10));
2 插入資料
insert into emp(id, name) values(1,'劉大');
insert into emp(id, name) values(2,'陳二');
insert into emp(id, name) values(3,'張三');
insert into emp(id, name) values(1,'劉大');
insert into emp(id, name) values(1,'劉大');
insert into emp(id, name) values(4,'李四');
insert into emp(id, name) values(5,'王五');
insert into emp(id, name) values(6,'趙六');
insert into emp(id, name) values(4,'李四');
commit;
3 刪除語句
delete from emp a where a.rowid > (select min(b.rowid) from emp b where a.id = b.id and a.name = b.name);
commit;
分析:
這裡使用的rowid是oracle資料表中的偽列,rowid會自動增長,不同行記錄的rowid絕不會重複。比如第一行的rowid是AAAizrAAEAAAAllAAA,則第二行的rowid為AAAizrAAEAAAAllAAB,第三行的rowid為AAAizrAAEAAAAllAAC。具體可用select rowid from emp來查詢。
select min(b.rowid) from emp b where a.id = b.id and a.name = b.name這一句是把id和name都相同的記錄分組(本例子可以分成6組),並取rowid最小的值。在此基礎上delete語句用來刪除每組中的rowid不是最小的記錄。
這裡“>”改為“!=”效果也一樣。
4 檢驗
select * from emp;
ID NAME
---------- ----------
1 劉大
2 陳二
3 張三
4 李四
5 王五
6 趙六
6 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1852697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql刪除重複記錄只保留一條SQL
- MariaDB刪除重複記錄效能測試
- 刪除重複id的記錄
- leetcode面試經典150-26. 刪除有序陣列中的重複項LeetCode面試陣列
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- MySQL刪除重複記錄並保留第一條MySql
- 經典面試題面試題
- sql 經典面試題及答案(選課表)SQL面試題
- MS SQL Server 刪除重複行資料SQLServer
- 使用SQL語句去掉重複記錄的兩種方法SQL
- Mysql語句查詢指定重複記錄和刪除重複記錄僅保留一條【親測可以】MySql
- Oracle如何刪除表中重複記錄保留第一條Oracle
- 前端經典面試題前端面試題
- Js 經典面試題JS面試題
- javascript經典面試題JavaScript面試題
- java經典面試題Java面試題
- 面試題: 資料庫:delete和trancate刪除表記錄的區別面試題資料庫delete
- 0928面試小節:刪除有序連結串列中的重複元素面試
- VSCode刪除重複的空行VSCode
- Google經典面試題解析Go面試題
- 經典Java面試題收集Java面試題
- [面試題]事件迴圈經典面試題解析面試題事件
- 刪除重複資料
- 刪除oracle重複值Oracle
- mysql 刪除重複項MySql
- JavaScript 刪除重複字元JavaScript字元
- 題目:刪除排序陣列中的重複項排序陣列
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- 經典 JS 閉包面試題JS面試題
- leetcode-面試經典150題LeetCode面試
- 前端經典面試題(有答案)前端面試題
- 20道JavaScript經典面試題JavaScript面試題
- Runtime經典面試題(附答案)面試題
- Python經典面試題(附答案)!Python面試題
- JavaScript經典面試題詳解JavaScript面試題
- 經典Java面試題收集(二)Java面試題
- 面試題記錄面試題
- 軟體測試經典測試題(4)
- JavaScript 刪除字串重複字元JavaScript字串字元