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);