免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2944 | 回复: 4
打印 上一主题 下一主题

在插入时应该怎样避免重复行而又不影响其他行的插入 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-01-21 19:43 |只看该作者 |倒序浏览
如:
insert into t1(c1,c2)
select c3,c4 from t2;
如果t1表有c1,c2 的唯一性约束,而此时从t2表中选出的数据与t1表中的数据有重复,那么就一条记录也插不进。
怎样才能做到把不重复的记录都正常插入而抛弃重复记录?

论坛徽章:
0
2 [报告]
发表于 2003-01-21 20:30 |只看该作者

在插入时应该怎样避免重复行而又不影响其他行的插入

试试这个SQL吧。

insert into t1 values (
select c3,c4 from t2
minus
select c1,c2 from t1);

如果不行,可以考虑将表t1复制一份:
create table t3 as select * from t1;
然后再执行上一条SQL即可。

论坛徽章:
0
3 [报告]
发表于 2003-01-22 09:19 |只看该作者

在插入时应该怎样避免重复行而又不影响其他行的插入

可以使用游标查询t2表,然后用exception来忽略报错,使循环得以继续。因为你在目的表中有unique约束,所以出现违反记录时,会出现exception,写个exception语句来处理就可以了。

论坛徽章:
0
4 [报告]
发表于 2003-02-08 19:33 |只看该作者

在插入时应该怎样避免重复行而又不影响其他行的插入

可以使用sql*loader ,他会将重复记录作为discard部分抛弃出来。

load data

insert or append (不能使用replace)into table ...

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2003-02-10 12:57 |只看该作者

在插入时应该怎样避免重复行而又不影响其他行的插入

试试这样可不可以:
insert into t1(c1,c2)
select distinct c3,c4 from t2;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP