- SQL> select * from t;
-
- ID NAME SCORE
- ---------- ---------- ----------
- 3 smith 100
- 4 smith 100
- 5 jerry 80
- 6 tom 80
- 1 evan 100
- 2 evan 100
- 7 evan 100
-
- 已选择7行。
-
- SQL> ed tmp.buf
-
- SQL> --获取所有的记录,但name与score两者不能重复
- SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的id
- SQL> select min(id) id,name,score from t group by name,score;
-
- ID NAME SCORE
- ---------- ---------- ----------
- 6 tom 80
- 3 smith 100
- 1 evan 100
- 5 jerry 80
-
- SQL> ed tmp.buf
-
- SQL> --获取有重复记录的数据(有重复说明分组后count(*)>1),并且其id最小的记录
- SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的id
- SQL> select min(id) id,name,score from t group by name,score having count(*) > 1;
-
- ID NAME SCORE
- ---------- ---------- ----------
- 3 smith 100
- 1 evan 100
-
- SQL> ed tmp.buf
-
- SQL> --删除那些name与score重复的记录,只保留id最小的那一条
- SQL> DELETE FROM t
- 2 WHERE t.ID NOT IN (SELECT MIN(id) AS id FROM t GROUP BY NAME, score);
-
- 已删除3行。
-
- SQL> select * from t;
-
- ID NAME SCORE
- ---------- ---------- ----------
- 3 smith 100
- 5 jerry 80
- 6 tom 80
- 1 evan 100
此外还可以使用临时表的方式,即将我们需要的数据(没有重复的数据)先放到临时表中,然后删除正式表中的数据,最后将临时表中的数据插入到正式表中。但是效率如何我还不知道哩,没有测试哩!Oracle 内存管理PGAOracle 全???检索相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)