Insert into A (A_ID,bb,cc) select B_ID,ee,ff from B
执行此操作,怎样排除重复写入问题?一、
若 B_ID 的值 已存在 A表中A_ID 那么则跳过
若不存在A_ID则写入记录二、
若 B_ID的值 存在于 A表中的A_ID 则更新数据
若不存在则写入记录 能实现吗?我对数据库不是非常了解,也晓得数据库博大精深。。
所以请教高人下。。望指点一二
解决方案 »
- imp 导入dmp文件报错 IMP-00017: 由于 ORACLE 错误 20005 求大神!!
- 如何优化,请求帮助.
- 懂Oracle的都会回答的问题~~
- RATIO_TO_REPORT()OVER()函数如何解决百分比问题
- [求助]Window下,已经安装了Oracle 9i,现在想学java,应该用什么工具?
- 如何查询对于一个域重复的记录?
- 在red hat linux9.0下运行oracle91的sql plus出错!
- 新手,谢谢帮助
- 请教高手 oracle9i for window2000 如何用命令行启动oracle服务?
- oracle 8i,9i超级用户的密码分别是什么?
- 求写复杂sql语句,有测试数据
- PL/SQL Developer 查询结果200W的数据量直接导出为文本..
也可以用merge into
也可以
insert into a(A_ID,bb,cc)
select B_ID,ee,ff from B
where not exists(select 1 from a where a_id=b.b_id)
http://blog.csdn.net/popfei3707/archive/2009/09/01/4505766.aspx
10g以上的版本可以只写when matched和when not matched的其中一段
Oracle merge into 的用法详解实例 作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表;语法:MERGE INTO [your table-name] [rename your table here]USING ( [write your query here] )[rename your query-sql and using just like a table]ON ([conditional expression here] AND [...]...)WHEN MATHED THEN [here you can execute some update sql or something else ]WHEN NOT MATHED THEN [execute something else here ! ] -------实例-------
merge into a
using (select id,name from b ) c
on(a.id=c.id )
when matched then update set a.name=c.name
when not matched then insert (a.id,a.name) values (c.id,c.name);
作用:利用表 b 跟新表a ,条件是a.id=b.id,如果a表中没有该条件的数据就插入。如果你的数据量很大,此sql效率非常高。
select B_ID,ee,ff from B a left join A b on a.B_ID=b.A_ID and a.ee=b.bb and a.ff=b.cc
where b.A_ID is null
这样就可以
恭祝成功!