oracle+利用rowid去重,SQL查询和删除重复值

如题,SQL查询和删除重复值,例子是在Oracle环境下,类似写法网上很多。

1、利用distinct关键字去重

2、利用group by分组去重(这里没有实验出来就不写了)

3、利用rowid查询去重(个人推荐这个,rowid查询速度是最快的)

先一张测试表(USERS),里面有很多重复数据

bVWFEp?w=432&h=312

方法一:distinct关键字

/*对username字段去重*/

select distinct username from users;

bVWFEv?w=188&h=88

/*根据字段去重,但是多个字段时候只能去全字段重复的数据*/

select distinct username,password from users;

bVWFEC?w=279&h=110

方法二:用rowid方法进行全字段重复查询,也可以按字段查询重复值

注:先查询出最后一条的全字段重复值,在用rowid找出其他剩余的重复值

select * from users u01 where rowid!=

(

select max(rowid) from users u02

where u01.username=u02.username and

u01.password=u02.password and

u01.age=u02.age and

u01.sex=u02.sex

)

bVWFFa?w=424&h=207

删除重复数据(这里删除的是全字段重复的数据,根据不同情况where后面条件适当修改)

delete from users u01 where rowid!=

(

select max(rowid) from users u02

where u01.username=u02.username

and u01.password=u02.password

and u01.age=u02.age

and u01.sex=u02.sex

)

bVWFFo?w=429&h=131

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值