求一个解决方案。
时间:2011-11-04
来源:互联网
A和B中有一个 hello 的字段,该字段在B表中是唯一的,在A表中不是;
A表中有50万条记录,B表中有1000万条记录;
现在我有个需求,我要从A表中拿出10W条记录,放到B表中去,请问如何处理?
注意的是,A表的 hello 字段可以重复,而在B表是唯一的;
之前考虑过,用唯一约束的异常来解决问题,但是效果不是很好。。
作者: binjoo 发布时间: 2011-11-04
作者: java3344520 发布时间: 2011-11-04
作者: tx2730 发布时间: 2011-11-04
select hello
from tbl_a a
where not exists (select 1 from tbl_b b where a.hello = b.hello)
group by hello;
作者: opps_zhou 发布时间: 2011-11-04
lz是要实现去掉重复呢还是要让重复资料也进去,或者是把重复的hello处理成唯一值?
作者: nvhaixx 发布时间: 2011-11-04
A表中 hello 字段有
1
2
3
4
5
6
7
8
9
0
1
7
8
9
0
这十五条数据
B表中hello有
1
3
5
7
9
这五条数据。。
那么,我要从A中可以进入B表的数据就是hello不存在的数据。。
比如 2 4 6 8 0。。
但是我这实际应用数据量很大的,最少是百万以上。。
求高手给出解决方案。。
谢谢先。。
作者: binjoo 发布时间: 2011-11-04
作者: cosio 发布时间: 2011-11-04
SQL code
--1、建一个和A表一模一样的临时表,并在hello上建索引 create table tmp_A as select * from A where 1=2; create index tmp_a_idx1 on tmp_a(hello); --2、建立一个临时表tmp_b B表hello字段替冲,并加索引 create table tmp_B as select distinct hello from B; create index tmp_b_idx1 on tmp_b(hello); --3、从A表中随即查出10W条 hello字段不重复的数据插入临时表 tmp_A INSERT INTO TMP_A SELECT 列出A表字段 FROM (SELECT A.*, ROW_NUMBER() OVER(PARTITION BY A.HELLO ORDER BY DBMS_RANDOM.VALUE) ROW_ FROM A WHERE NOT EXISTS (SELECT 1 FROM TMP_B WHERE A.HELLO = TMP_B.HELLO)) WHERE ROW_ = 1 AND ROWNUM <= 100000; --4、将临时表Tmp_a中数据插入B表 insert into B select * from Tmp_a;
作者: BenChiM888 发布时间: 2011-11-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28