2016-01-09 学习笔记1 Orcale rownum rowid

本文介绍了Oracle数据库中ROWNUM的功能与应用,包括其作为伪数列的特点,并提供了几种实用的方法来处理表中的重复数据,例如完全删除或保留一条记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rownum是在得到结果的时候产生,用于标记结果集中结果顺序的一个字段,这个字段被称为”伪数列“,也就是实施不存在的一个数列,他的特点是按顺序标记,而且是”逐次通知“,换句话说只有存在rownum=1的记录,才可能存在rownum=2的记录
假设我们查询条件为rownun=2,那么查出的第一条数据记录的时候,orcale标记此条记录rownum为1,结果发现和rownum=2条件不符,于是结果为空

select rowid,empno,ename from emp where rowid='AAAMgAAEAAAAgAAB'

如何删除重复数据,name age同时相同视为重复
1、重复数据完全删除

selet name,age,count(*) from tb_test group by age,name havig count(*)>1

2、保留其中一条数据

--1.创建临时表
create table tb_tmp as select distinct name,age from tb_test;
trunate table tb_test;   --清空表记录
insert into tb_test selet * from tb_tmp; --将临时表中数据插回原表
--2.利用rowid
delete from tb_test where rowid in(
        select  a.rowid from tb_test a,tb_test b where 
                a.rowid>b.rowid and a.name=b.name and a.age=b.age) 
--3.max or in
delete from tb_test a where rowid not in 
    (select max(b.rowid) from tb_test b where a.name=b.name and a.age=b.age)
--4.
delete from tb_test where rowid not in(
    select max(rowid) from tb_test t group by t.name,t.age);    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值