oracle 删除指定字段重复的记录
来源:互联网 发布:移动软件开发工程师 编辑:程序博客网 时间:2024/04/27 02:23
- 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
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.bufSQL> --获取所有的记录,但name与score两者不能重复SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的idSQL> 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 80SQL> ed tmp.bufSQL> --获取有重复记录的数据(有重复说明分组后count(*)>1),并且其id最小的记录SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的idSQL> select min(id) id,name,score from t group by name,score having count(*) > 1; ID NAME SCORE---------- ---------- ---------- 3 smith 100 1 evan 100SQL> ed tmp.bufSQL> --删除那些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此外还可以使用临时表的方式,即将我们需要的数据(没有重复的数据)先放到临时表中,然后删除正式表中的数据,最后将临时表中的数据插入到正式表中。
但是效率如何我还不知道哩,没有测试哩!
0 0
- oracle 删除指定字段重复的记录
- oracle 删除指定字段重复的记录
- 删除重复字段记录
- oracle 删除重复的记录
- oracle 删除重复的记录
- Oracle删除重复的记录
- 删除某表中某字段重复的记录
- Oracle删除重复记录oracle 删除重复记录的高效方法 && mysql 删除重复记录方法
- MySQL查询重复字段,及删除重复记录的方法
- MySQL查询重复字段,及删除重复记录的方法
- MySQL查询重复字段,及删除重复记录的方法
- MySQL查询重复字段,及删除重复记录的方法
- oracle中删除重复数据(几个字段相同的数据为相同记录)
- 删除表中某字段重复记录
- oracle删除重复记录
- oracle删除重复记录
- Oracle删除重复记录
- oracle 删除重复记录
- Webrtc AGC 算法原理介绍(四)
- activiti入门
- arduino IDE中如何实现代码折叠功能
- tomcat 和 nginx 做代理服务做结合请求
- task of activity(一)
- oracle 删除指定字段重复的记录
- mysql ddl 导致tmp空间溢出并报错
- 如何使用云片获得第一条短信验证码?
- [iOS单元测试系列]单元测试框架选型
- 第三章 数组和字符串(2)
- 使用exe4j生成exe可执行程序
- SSM框架----修改mybatis-generate源码实现实体类加上字段注释
- 微信小程序之Material Design——input组件
- [iOS单元测试系列]单元测试编码规范