oralce与mysql中,如何删除重复记录

最近遇到这么一个问题:要求删除表中重复的记录。具体来说:比如有一张用户表,用户姓名不是主键可以重复,存在这种情况,一个用户姓名被录入了好几次,如何删除重复的记录,同时要保留一条该用户录。没有具体说明保留那条记录,只要用户姓名重复的保留一条即可。

 

示例:

animal 表:

create table animal (

id int ,

name varchar2(100),

sex varchar2(10)

);

 

添加记录:

insert into animal values (1, 'tom', 'male');

 

insert into animal values (2, 'tom', 'female');

 

insert into animal values (3, 'tom', 'ff');

 

insert into animal values (4, 'lili', 'male');

 

id为1,2,3的三条记录名字重了,要求只保留一条,删除另外两条。

 

oralce数据库中,该问题解决方法的具体实现如下:

 

delete from animal a where rowid<(select max(b.rowid) from animal b where a.name=b.name);

 

结果:

剩下两条记录。一条name=lili,一条name=tom.

 

-----------------------------------------------------------------------------

mysql数据库中,该问题解决方法的具体实现:

 

alter ignore table animal add unique index (name);

 

结果同上面。

 

总结:

类似问题oracle参考手册,mysql参考手册中大多有讲解。平时学习时,注意多看权威的参考资料,有助于全面掌握知识,并系统化,规范化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值