大量重复值表的数据进行重组,或者提取数据

 

---创建测试环境:E1表,模拟大量重复值的表;

SQL> create table e1 as select * from emp;

SQL> insert into e1 select * from e1;

112 rows created.

SQL> commit;

 

--如何提取去重后的数据呢?

select distinct empno,sal from e1;      OK

因为是一模一样的;

select * from e1 

 union

select * from e1;

还是可以;

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

如果表很大(数据量大),列很多,使用distinct变为一个不现实的操作;

union<直接操作会影响性能;

----

 

比较合理的测试: 创建全局临时表:会话级别的;

create global temporary table la on commit preserve rows as select * from emp where 1=2;

insert into la (select * from e1 union select * from e1);

 

---随后,创建永久表,测试查询,是否OK

create table abc as select * from la;

select count(*) from abc;

COUNT(*)
----------
14

 

---删除垃圾表:

drop table e1;

create table e1 as select * from la;      --重建,随后验证

select count(*) from e1;

COUNT(*)
----------
14

 

转载于:https://www.cnblogs.com/lvcha001/p/7744539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值